Jika saya mencoba
"my, tags are, in here".split(" ,")
Saya mendapatkan yang berikut ini
[ 'my, tags are, in here' ]
Padahal saya mau
['my', 'tags', 'are', 'in', 'here']
javascript
Hoa
sumber
sumber
"my, tags are, in here".split(" ,")
akan memisahkan string hanya di mana spasi diikuti oleh koma adalah pemisah. String Anda tidak mengandung urutan itu, oleh karena itu tidak dipisahkan."my, tags are, in here".split(", ")
dengan urutan pemisahan yang ditukar setidaknya akan membagi string asli Anda menjadi tiga bagian, setelah setiap koma-dan-spasi. Jika Anda menginginkan lima bagian, jawaban di bawah menentukan string yang cocok sebagai ekspresi reguler yang cocok dengan spasi atau koma.Jawaban:
String.split
juga dapat menerima ekspresi reguler:Regex khusus ini terbagi atas urutan satu atau lebih koma atau spasi, sehingga misalnya beberapa spasi berurutan atau urutan spasi koma + tidak menghasilkan elemen kosong dalam hasil.
sumber
/,?\s+/
?spaces , before commas
.\s
. Saya mungkin memiliki beberapa jeda baris di gumpalan dan\s
mengurusnya juga.input.split("/[ ,]+/)"
. Tinggalkan kutipan (input.split(//)
bukaninput.split("//")
) dan Anda akan memiliki pengalaman yang jauh lebih baik. Karena anehnya, itu mungkin hanya akan bekerja pada dirinya sendiri (untuk menghasilkan["input.split(\"", ")\""]
).Saran yang digunakan
.split(/[ ,]+/)
bagus, tetapi dengan kalimat alami cepat atau lambat Anda akan mendapatkan elemen kosong dalam array. misalnya['foo', '', 'bar']
.Tidak masalah jika tidak masalah untuk kasus penggunaan Anda. Tetapi jika Anda ingin menghilangkan elemen kosong, Anda dapat melakukan:
sumber
Boolean()
konstruktor dipanggil pada nilai apa pun, konstruktor akan mentransmisikan nilai itu ke boolean - true atau false. Dengan demikian, nilai yang salah akan difilter dari larik, termasuk string kosong.[1, 2, 3].map(String)
"foo, bar,,foobar,".split(/[\s,]+/)
kembali["foo", "bar", "foobar", ""]
(karena koma yang menjuntai di akhir), terima kasih!Anda dapat menggunakan regex untuk menangkap berapa pun ruang kosong, dan ini akan seperti:
sumber
/\s+/
. Misalnya'a b c '.split(/\s+/) === [ 'a', 'b', 'c', '' ]
,. Jika Anda.trim()
yang duluan, Anda akan menjadi baik.hasilnya adalah :
sumber
input.split(/\s*[\s,]\s*/)
…
\s*
Mencocokkan nol atau lebih karakter spasi (bukan hanya spasi, tetapi juga tab dan baris baru)....
[\s,]
cocok dengan satu karakter spasi putih atau satu komaJika Anda ingin menghindari elemen kosong dari input seperti
"foo,bar,,foobar"
, ini akan melakukan triknya:input.split(/(\s*,?\s*)+/)
The
+
cocok dengan salah satu atau lebih dari karakter sebelumnya atau kelompok.Edit:
Ditambahkan
?
setelah koma yang cocok dengan nol atau satu koma.Edit 2:
Ternyata hasil edit 1 adalah kesalahan. Diperbaiki. Sekarang harus ada setidaknya satu koma atau satu spasi agar ekspresi menemukan kecocokan.
sumber
"foo,bar,foobar".split(/[ ,]+/)
kembali["foo", "bar", "foobar"]
juga.Ketika saya ingin mempertimbangkan karakter tambahan seperti koma Anda (dalam kasus saya setiap token dapat dimasukkan dengan tanda kutip), saya akan melakukan string.replace () untuk mengubah pembatas lain menjadi kosong dan kemudian membaginya di spasi.
sumber
str_variable.replace(/[,'"]+/gi, ' ').split(' ')