Hapus SEMUA spasi putih dari teks

590
$("#topNav" + $("#breadCrumb2nd").text().replace(" ", "")).addClass("current");

Ini cuplikan dari kode saya. Saya ingin menambahkan kelas ke ID setelah mendapatkan properti teks ID lain. Masalah dengan ini, adalah ID memegang teks yang saya butuhkan, berisi celah di antara huruf-huruf.

Saya ingin ruang putih dihapus. Saya telah mencoba TRIM()dan REPLACE()tetapi ini hanya berfungsi sebagian. Satu- REPLACE()satunya menghapus ruang 1.

Cecil Theodore
sumber

Jawaban:

1349

Anda harus memberi tahu replace () untuk mengulangi regex:

.replace(/ /g,'')

The g karakter berarti mengulang pencarian melalui seluruh string. Baca tentang ini, dan pengubah RegEx lainnya yang tersedia di JavaScript di sini .

Jika Anda ingin mencocokkan semua spasi putih, dan bukan hanya karakter spasi literal, gunakan \ssebaliknya:

.replace(/\s/g,'')
Flimzy
sumber
30
Coffeescript akan mengeluh tentang regex itu karena alasan yang mengerikan. Sebaliknya saya harus terus maju dan menggunakan .replace(/\s+/g, '')yang benar-benar baik-baik saja oleh saya.
Dan Bradbury
7
Jika Anda ingin menerapkan sesuatu seperti metode string.strip ruby, yang kembali mengembalikan salinan string dengan memimpin dan trailing spasi dihapus, ini harus bekerja: x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "") The ^\ssarana spasi setelah awal string, \s$berarti spasi pada akhir string, |adalah untuk salah satu atau di dalam grup, dan gpengubahnya dijelaskan dalam komentar di atas. Anda juga perlu +bilangan setelah masing \s- masing karena Anda ingin menangkap satu atau lebih contoh spasi putih.
Garrett Simpson
300
.replace(/\s+/, "") 

Hanya akan mengganti spasi putih pertama , ini termasuk spasi, tab, dan baris baru.

Untuk mengganti semua spasi putih dalam string, Anda harus menggunakan mode global

.replace(/\s/g, "")
Pantelis
sumber
11
Yang pertama tidak menghapus semua spasi putih (hanya menghapus grup ruang pertama / baris baru / tab), yang kedua adalah OK. demo: regex101.com/r/wX8rF2/3
4
.replace (/ \ s + / g, '')
mynameistechno
@mynameistechno The +tidak menambahkan apa-apa karena kita sudah menggunakan gpengubah (global)
d4nyll
baris pertama tidak berfungsi karena tidak menghapus spasi tambahan dari teks
UKDataGeek
@ d4nyll Mungkin membuatnya lebih efisien.
Solomon Ucko
5

Menggunakan String.prototype.replacedengan regex, sebagaimana disebutkan dalam jawaban lain, tentu saja merupakan solusi terbaik.

Tapi, hanya untuk bersenang-senang, Anda juga dapat menghapus semua spasi putih dari teks dengan menggunakan String.prototype.splitdan String.prototype.join:

const text = ' a b    c d e   f g   ';
const newText = text.split(/\s/).join('');

console.log(newText); // prints abcdefg

Alberto Trindade Tavares
sumber