Diberikan string seperti:
"Anjing itu memiliki ekor panjang, dan itu MERAH!"
Jenis sihir jQuery atau JavaScript apa yang dapat digunakan untuk menjaga ruang hanya satu maks ruang?
Tujuan:
"Anjing itu memiliki ekor panjang, dan itu MERAH!"
javascript
jquery
regex
AnApprentice
sumber
sumber
str.replace(/ +(?= )/g,'');
Anda tidak mengganti apa pun yang tidak perlu.Jawaban:
Mengingat Anda juga ingin menutup tab, baris baru, dll, cukup ganti
\s\s+
dengan' '
:Jika Anda benar-benar hanya ingin menutupi spasi (dan karenanya bukan tab, baris baru, dll), lakukan itu:
sumber
function removeExtraSpaces(string){ return string.replace(/\s{2,}/g, ' ');}
trim()
. Lebih cepat dari regex. Anda bisa melakukanstring.trim().replace(/\s\s+/g, ' ');
ataustring.replace(/\s\s+/g, ' ').trim();
./\s\s+/g
dan/\s{2,}/g
tidak cocok dengan karakter spasi putih kecuali ada setidaknya dua yang berdekatan satu sama lain, misalnya akan cocok \ t \ t tetapi tidak akan cocok dengan tunggal \ t.string.replace(/\s+/g, ' ')
akan cocok dengan semua substring karakter tunggal dan beberapa spasi putih dan ganti dengan ruang tunggal.Karena Anda tampaknya tertarik dengan kinerja, saya memprofilkan ini dengan pembakar. Inilah hasil yang saya dapatkan:
Ini ada di Firefox, menjalankan penggantian string 100k.
Saya mendorong Anda untuk melakukan tes profil Anda sendiri dengan pembakar, jika Anda berpikir kinerja adalah masalah. Manusia terkenal buruk dalam memprediksi kemacetan dalam program mereka.
(Juga, perhatikan bahwa bilah alat pengembang IE 8 juga memiliki profiler bawaan - mungkin perlu memeriksa seperti apa kinerjanya di IE.)
sumber
( / +(?= )/g, ' ');
gagal di IE9, ia meninggalkan ruang ganda:"Foo Bar Baz".replace(/ +(?= )/g, ' ');
->"Foo Bar Baz"
EDIT: Jika Anda ingin mengganti semua jenis karakter spasi putih, cara yang paling efisien adalah seperti itu:
sumber
Ini adalah salah satu solusi, meskipun akan menargetkan semua karakter ruang:
Sunting : Ini mungkin lebih baik karena menargetkan ruang diikuti oleh 1 atau lebih ruang:
Metode alternatif:
Saya tidak menggunakannya
/\s+/
dengan sendirinya karena itu menggantikan spasi yang menjangkau 1 karakter beberapa kali dan mungkin kurang efisien karena menargetkan lebih dari yang diperlukan.Saya tidak menguji secara mendalam semua ini jadi lmk jika ada bug.
Juga, jika Anda akan melakukan penggantian string ingatlah untuk menetapkan kembali variabel / properti untuk penggantiannya sendiri, misalnya:
Menggunakan jQuery.prototype.text:
sumber
Saya memiliki metode ini, saya menyebutnya metode Derp karena kurangnya nama yang lebih baik.
Menjalankannya di JSPerf memberikan beberapa hasil yang mengejutkan.
sumber
Metode yang lebih kuat: Ini juga akan menghilangkan spasi awal dan akhir, jika ada. Misalnya:
Contoh Anda tidak memiliki spasi tersebut tetapi itu adalah skenario yang sangat umum juga, dan jawaban yang diterima hanya memotongnya menjadi satu spasi, seperti: "... RED!", Yang bukan apa yang biasanya Anda perlukan.
sumber
Lebih kuat:
sumber
saya menyarankan
hanya untuk ruang
ATAU
untuk mengubah banyak pengembalian menjadi pengembalian tunggal juga.
sumber
Saya tahu bahwa saya terlambat ke pesta, tetapi saya menemukan solusi yang bagus.
Ini dia:
sumber
Berikut ini adalah solusi alternatif jika Anda tidak ingin menggunakan replace (ganti spasi dalam string tanpa menggunakan ganti javascript)
sumber
Jawaban tidak terenkripsi komprehensif untuk pemula dkk.
Ini untuk semua boneka seperti saya yang menguji skrip yang ditulis oleh beberapa dari kalian yang tidak bekerja.
3 contoh berikut adalah langkah-langkah yang saya ambil untuk menghapus karakter khusus DAN spasi ekstra pada 3 situs web berikut (semuanya berfungsi dengan baik) {1. EtaVisa.com 2. EtaStatus.com 3. Tikun.com} jadi saya tahu ini berfungsi dengan baik.
Kami telah merantai ini bersama-sama dengan lebih dari 50 sekaligus dan TANPA masalah.
// Ini menghapus karakter khusus + 0-9 dan memungkinkan untuk huruf adil (huruf besar dan RENDAH)
// Ini menghapus karakter khusus dan memungkinkan untuk hanya huruf (huruf besar dan RENDAH) dan 0-9 DAN spasi
// Ini menghapus karakter khusus dan memungkinkan untuk hanya huruf (huruf besar dan RENDAH) dan 0-9 DAN spasi // .replace (/ \ s \ s + / g, "") pada akhirnya menghilangkan spasi berlebihan // ketika saya menggunakan tanda kutip tunggal, itu tidak berhasil.
::LANJUT:: Simpan # 3 sebagai
a .js
// Saya memanggil milik saya NoDoubles.js:: NEXT :: Sertakan JS Anda ke halaman Anda
Sertakan ini di bidang formulir Anda :: seperti
Sehingga terlihat seperti ini
Ini akan menghapus karakter khusus, memungkinkan ruang tunggal dan menghapus ruang tambahan.
sumber
Juga kemungkinan:
sumber
Atau jika Anda juga ingin mengganti tab:
sumber
Jquery memiliki fungsi trim () yang pada dasarnya mengubah sesuatu seperti "FOo Bar" ini menjadi "FOo Bar".
Ini jauh lebih berguna karena secara otomatis menghilangkan ruang kosong di awal dan di akhir string juga. Tidak diperlukan regex.
sumber
diganti tidak digunakan, string = string.split (/ \ W + /);
sumber
sumber
Kita dapat menggunakan regex berikut ini dengan bantuan perintah sed system. Regex yang sama dapat digunakan dalam bahasa dan platform lain.
Tambahkan teks ke beberapa file say test
Kita bisa menggunakan regex berikut untuk mengganti semua spasi putih dengan spasi tunggal
Semoga ini melayani tujuan
sumber
Coba ini untuk mengganti beberapa ruang dengan satu ruang.
Baca lebih lanjut @ Mengganti Beberapa Spasi dengan Spasi Tunggal
sumber
hasil:
sumber
Untuk kontrol lebih lanjut Anda dapat menggunakan penggantian panggilan balik untuk menangani nilai.
sumber
Script ini menghilangkan spasi putih (banyak spasi, tab, pengembalian, dll) antara kata dan trim:
sumber
'mouse pointer touch' .replace (/ ^ \ + | \ s + $ | (\ s) + / g, "$ 1") harus melakukan trik!
sumber
Saya tahu kami harus menggunakan regex, tetapi selama wawancara, saya diminta untuk melakukannya TANPA MENGGUNAKAN REGEX.
@slightlytyler membantu saya datang dengan pendekatan di bawah ini.
sumber