Bagaimana cara menghapus spasi dalam string? Contohnya:
Memasukkan:
'/var/www/site/Brand new document.docx'
Keluaran:
'/var/www/site/Brandnewdocument.docx'
javascript
text
JLuiz
sumber
sumber
" ahm ed ".split('').filter(e => e.trim().length).join('')
Jawaban:
Ini?
Contoh
Pembaruan: Berdasarkan pertanyaan ini, ini:
adalah solusi yang lebih baik. Ini menghasilkan hasil yang sama, tetapi lebih cepat.
Regex
\s
adalah regex untuk "spasi putih", dang
merupakan bendera "global", yang berarti cocok dengan SEMUA\s
(spasi putih).Penjelasan yang bagus untuk
+
dapat ditemukan di sini .Sebagai catatan tambahan, Anda dapat mengganti konten antara tanda kutip tunggal dengan apa pun yang Anda inginkan, sehingga Anda dapat mengganti spasi dengan string lain.
sumber
.replace(/\s+/g, '')
lebih sering. Apakah ada perbedaan antara itu dan jawaban saya?.replace(' ','')
akan berhasil. Sangat dihargai!+
hanya memiliki 60 suara jika ada yang ingin memberi kredit kepadanya terlalu stackoverflow.com/a/5964427/4258817.replace('/\s+/g', '')
karena akan mencoba menemukan string literal itu. Ini membuat saya tersandung sebelum ...Dua cara untuk melakukan ini!
sumber
PENDEK dan TERCEPAT :
str.replace(/ /g, '');
Benchmark:
Di sini hasil saya - (2018.07.13) MacOs High Sierra 10.13.3 di Chrome 67.0.3396 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit)):
String pendek
String pendek mirip dengan contoh dari pertanyaan OP
Solusi tercepat di semua browser adalah
/ /g
(regexp1a) - Chrome 17.7M (operasi / detik), Safari 10.1M, Firefox 8.8M. Yang paling lambat untuk semua browser adalahsplit-join
solusi. Perubahanke
\s
atau menambahkan+
ataui
untuk regexp memperlambat pengolahan.String PANJANG
Untuk string sekitar ~ 3 juta hasil karakter adalah:
Anda dapat menjalankannya di mesin Anda: https://jsperf.com/remove-string-spaces/1
sumber
Mengikuti jawaban @rsplak: sebenarnya, menggunakan split / join way lebih cepat daripada menggunakan regexp. Lihat kasus uji kinerja
Begitu
var result = text.split(' ').join('')
beroperasi lebih cepat daripada
var result = text.replace(/\s+/g, '')
Pada teks-teks kecil ini tidak relevan, tetapi untuk kasus-kasus ketika waktu penting, misalnya dalam analis teks, terutama ketika berinteraksi dengan pengguna, itu penting.
Di sisi lain,
\s+
menangani variasi karakter ruang yang lebih luas. Di antara dengan\n
dan\t
, itu juga cocok dengan\u00a0
karakter, dan itulah yang
diaktifkan, saat mendapatkan tekstextDomNode.nodeValue
.Jadi saya pikir kesimpulan di sini dapat dibuat sebagai berikut: jika Anda hanya perlu mengganti spasi
' '
, gunakan split / gabung. Jika ada simbol kelas simbol yang berbeda - gunakanreplace(/\s+/g, '')
sumber
way faster
. menjalankan tes dan hanya 2,19% lebih cepat, di Firefox 61 saya.Klik di sini untuk contoh kerja
sumber
Catatan: Meskipun Anda menggunakan 'g' atau 'gi' untuk menghapus spasi, keduanya berperilaku sama.
Jika kita menggunakan 'g' di fungsi ganti, itu akan memeriksa kecocokan yang tepat. tetapi jika kita menggunakan 'gi', ia mengabaikan sensitivitas case.
untuk referensi klik di sini .
sumber
Meskipun regex bisa lebih lambat, dalam banyak kasus pengembang hanya memanipulasi beberapa string sekaligus sehingga mempertimbangkan kecepatan tidak relevan. Meskipun / / lebih cepat dari / \ s /, memiliki 's' menjelaskan apa yang sedang terjadi ke pengembang lain mungkin lebih jelas.
Menggunakan Split + Join memungkinkan untuk manipulasi dirantai lebih lanjut dari string.
sumber