Удалить ВСЕ пробелы из текста

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

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

Я хотел бы удалить пробелы. Я попробовал TRIM()и , REPLACE()но это только частично работает. REPLACE()Удаляет только 1 - е место.

Сесил Теодор
источник

Ответы:

1351

Вы должны сказать replace (), чтобы повторить регулярное выражение:

.replace(/ /g,'')

Г символ означает повторить поиск через всю строку. Прочтите об этом и других модификаторах RegEx, доступных в JavaScript здесь .

Если вы хотите сопоставить все пробелы, а не только символ буквального пробела, используйте \sвместо этого:

.replace(/\s/g,'')
Flimzy
источник
31
Coffeescript будет жаловаться на это регулярное выражение по какой-то ужасной причине. Вместо этого мне пришлось пойти дальше и использовать, .replace(/\s+/g, '')что совершенно нормально для меня.
Дэн Брэдбери
7
Если вы хотите , чтобы осуществить что - то вроде метода string.strip рубина, который возвращает возвращает копию строки с ведущими и конечные пробелы удалены, это должно работать: x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "") The ^\sсредства пробельные после начала строки, с \s$помощью пробела в конце строка, |для или / или в группе, а gмодификатор объясняется в комментариях выше. Вам также нужны +квантификаторы после каждого, \sпоскольку вы хотите захватить один или несколько экземпляров пробелов.
Гаррет Симпсон
300
.replace(/\s+/, "") 

Заменит только первый пробел , это включает в себя пробелы, табуляции и новые строки.

Чтобы заменить все пробелы в строке, вам нужно использовать глобальный режим

.replace(/\s/g, "")
Pantelis
источник
11
Первый не удаляет все пробелы (он удаляет только первую группу пробелов / новой строки / табуляции), второй - в порядке. демо: regex101.com/r/wX8rF2/3
4
.replace (/ \ s + / g, '')
mynameistechno
@mynameistechno The +ничего не добавляет, так как мы уже используем 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

Альберто Триндаде Таварес
источник