Видаліть із тексту ВСІ білі пробіли


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

Це фрагмент з мого коду. Я хочу додати клас до ідентифікатора після отримання властивості тексту іншого ідентифікатора. Проблема в цьому полягає в тому, що ідентифікатор, що містить потрібний мені текст, містить пробіли між літерами.

Я хотів би, щоб білі проміжки були видалені. Я спробував TRIM()і , REPLACE()але це тільки частково працює. REPLACE()Видаляє тільки 1 - е місце.

Відповіді:


1347

Ви повинні сказати заміна (), щоб повторити регулярний вираз:

.replace(/ /g,'')

Символ g означає повторити пошук через весь рядок. Читайте про це та інші модифікатори RegEx, доступні в JavaScript тут .

Якщо ви хочете зіставити весь пробіл, а не лише буквальний пробіл, використовуйте \sнатомість:

.replace(/\s/g,'')

30
Кофеескрипт скаржиться на цей регулярний вираз з якоїсь жахливої ​​причини. Натомість мені довелося йти вперед і використовувати те, .replace(/\s+/g, '')що мені абсолютно добре.
Ден Бредбері

7
Якщо ви хочете реалізувати щось на кшталт методу ruby's string.strip, який повертає повертає копію рядка з вилученим проміжним і заднім пробілом, це повинно працювати: x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "") Засіб ^\sпробілів після початку рядка \s$означає пробіл в кінці string, значення |є для / або в групі, і gмодифікатор пояснюється в коментарях вище. Вам також потрібні +квантори після кожного, \sяк ви хочете захопити один або кілька екземплярів пробілів.
Гаррет Сімпсон

298
.replace(/\s+/, "") 

Буде чи замінити перший пробіл тільки , це включає в себе прогалини, табуляції і нові рядки.

Для заміни всіх пробілів у рядку потрібно використовувати глобальний режим

.replace(/\s/g, "")

11
Перший не видаляє всі пробіли (він видаляє лише першу групу пробілів / новий рядок / вкладку), другий - OK. demo: regex101.com/r/wX8rF2/3

4
.replace (/ \ s + / g, '')
mynameistechno

@mynameistechno +Не додає нічого, оскільки ми вже використовуємо g(глобальний) модифікатор
d4nyll

перший рядок не працював, оскільки він не видаляє пробіли з тексту
UKDataGeek

@ d4nyll Це може зробити його більш ефективним.
Соломон Учко

5

Використання String.prototype.replace з регулярним виразом, як згадується в інших відповідях, безумовно, найкраще рішення.

Але для задоволення ви також можете видалити всі текстові пробіли з тексту, використовуючи String.prototype.splitта String.prototype.join:

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

console.log(newText); // prints abcdefg

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.