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']
Mircea
sumber
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
Kemungkinan rangkap dari Hapus karakter pertama dari string dalam Javascript
Durgpal Singh
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.

Joel Etherton
sumber
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);
}
thomasrutter
sumber
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.

Pawel
sumber
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.

EMMERICH
sumber
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.

jjrv
sumber
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).

peterhil
sumber
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.

Fabian Jakobs
sumber
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.

onalbi
sumber
1
s=s.substring(1);

Saya suka menjaga hal-hal sederhana.

Cris
sumber
0

ini akan menghapus koma dan spasi tambahan

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
Avinash
sumber