Hapus koma dari string


187

Saya memiliki string berikut:

",'first string','more','even more'"

Saya ingin mengubah ini menjadi Array tetapi jelas ini tidak valid karena koma pertama. Bagaimana cara menghapus koma pertama dari string saya dan menjadikannya Array yang valid?

Saya ingin mengakhiri dengan sesuatu seperti ini:

myArray  = ['first string','more','even more']

43
Cukup gunakanmyString.slice(1);
NBK

2
@NikhilBenKuruvilla ini akan menghapus karakter apa pun meskipun itu bukan koma. Inilah karakter pertama yang hanya dihapus dengan stackoverflow.com/a/39047793/696535
Pawel


Pawel, apa yang akan menjadi ekspresi untuk menghilangkan titik koma pertama di mana pun itu dari awal string? Saya harus menggunakan ini: function removeFirstSemicolon (str) {str = str.trim (); str = str.replace (/ ^; /, ''); str kembali; } Itu mungkin lebih bermanfaat - sering ada spasi putih sebelum dan sesudah karakter jadi saya harus menggunakan trim dua kali.
user1585204

Jawaban:


312

Untuk menghapus karakter pertama yang akan Anda gunakan:

var myOriginalString = ",'first string','more','even more'"; 
var myString = myOriginalString.substring(1);

Saya tidak yakin ini akan menjadi hasil yang Anda cari karena Anda masih perlu membaginya untuk membuat array dengannya. Mungkin sesuatu seperti:

var myString = myOriginalString.substring(1);
var myArray = myString.split(',');

Ingatlah, karakter 'akan menjadi bagian dari setiap string dalam pemisahan di sini.


94

Dalam kasus khusus ini (selalu ada satu karakter di awal yang ingin Anda hapus) Anda akan ingin:

str.substring(1)

Namun, jika Anda ingin dapat mendeteksi apakah koma ada dan menghapusnya jika ada, maka sesuatu seperti:

if (str[0] == ',') { 
  str = str.substring(1);
}

3
+1 untuk persyaratan juga. Itu selalu lebih baik untuk menganggap koma mungkin tidak ada di sana.
JoeMoe1984

1
Ini adalah jawaban yang lebih baik dan harus menjadi jawaban yang diterima.
Christopher Smit

Tidak perlu menjalankan substring dua kali untuk memeriksa karakter pertama: if (str[0] === ',')hanya untuk membuatnya sedikit lebih berkinerja.
Croot

11

Satu garis

str = str.replace(/^,/, '');

Aku akan kembali.


9
var s = ",'first string','more','even more'";

var array = s.split(',').slice(1);

Itu dengan asumsi string yang Anda mulai sebenarnya adalah String, seperti yang Anda katakan, dan bukan Array string.


4

Dengan asumsi string disebut myStr:

// Strip start and end quotation mark and possible initial comma
myStr=myStr.replace(/^,?'/,'').replace(/'$/,'');

// Split stripping quotations
myArray=myStr.split("','");

Perhatikan bahwa jika string dapat hilang dalam daftar tanpa tanda kutipnya ada dan Anda ingin tempat kosong di lokasi yang sesuai dalam array, Anda harus menulis pemisahan secara manual untuk solusi yang kuat.


4
var s = ",'first string','more','even more'";  
s.split(/'?,'?/).filter(function(v) { return v; });

Hasil dalam:

["first string", "more", "even more'"]

Pertama-tama pisahkan dengan koma yang mungkin dikelilingi oleh tanda kutip tunggal,
lalu saring bagian yang tidak benar (kosong).


3

Untuk mengubah string menjadi array yang biasanya saya gunakan split()

> var s = ",'first string','more','even more'"
> s.split("','")
[",'first string", "more", "even more'"]

Ini hampir seperti yang Anda inginkan. Sekarang Anda hanya perlu menghapus dua karakter pertama dan terakhir:

> s.slice(2, s.length-1)
"first string','more','even more"

> s.slice(2, s.length-2).split("','");
["first string", "more", "even more"]

Untuk mengekstraksi substring dari string saya biasanya menggunakan slice()tetapi substr()dan substring()juga melakukan pekerjaan.


1

Anda dapat menggunakan langsung mengganti fungsi pada javascript dengan regex atau mendefinisikan fungsi bantuan seperti pada php ltrim (kiri) dan rtrim (kanan):

1) Dengan mengganti:

var myArray = ",'first string','more','even more'".replace(/^\s+/, '').split(/'?,?'/);

2) Fungsi bantuan:

if (!String.prototype.ltrim) String.prototype.ltrim = function() {
    return this.replace(/^\s+/, '');
};
if (!String.prototype.rtrim) String.prototype.rtrim = function() {
    return this.replace(/\s+$/, '');
};
var myArray = ",'first string','more','even more'".ltrim().split(/'?,?'/).filter(function(el) {return el.length != 0});;

Anda dapat melakukan dan hal-hal lain untuk menambahkan parameter ke fungsi bantuan dengan apa yang ingin Anda ganti char, dll.


1
s=s.substring(1);

Saya suka menjaga hal-hal sederhana.


0

ini akan menghapus koma dan spasi tambahan

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.