Удалить пробелы внутри строки в javascript

102

Я прочитал этот вопрос об обрезке javascript с ответом на регулярное выражение.

Затем я ожидаю, что обрезка удалит внутреннее пространство между Hello и World.

function myFunction() {
    alert("Hello World ".trim());
}

ИЗМЕНЕНО

Почему я этого ожидал !?

Ерунда! Очевидно, что trim не удаляет внутренние пробелы !, только ведущие и конечные, вот как работает обрезка, тогда это был очень неправильный вопрос, мои извинения.

Эрнан Эче
источник
10
trim удаляет пробелы в начале и в конце строки
Manse
3
Обрезка удаляет пробелы до и после строки. Hello Worldуже «обрезано».
Rocket Hazmat
@limelights покажут "HelloWorld" вместо "Hello World"
Эрнан Эче
4
@void: Это не «обрезка», это другая проблема.
Rocket Hazmat
связанный stackoverflow.com/questions/6623231/…
Adrien Be

Ответы:

238

Для удаления пробела используйте

"hello world".replace(/\s/g, "");

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

Хенрик Андерссон
источник
139
Возможно, вы захотите использовать, .replace(/ /g, '')если есть более одного места.
Rocket Hazmat
@Rocket, это абсолютно верно, просто еще не обновил ответ! Спасибо! :)
Хенрик Андерссон
47
@Juhana: Если вы хотите удалить другие пробелы тоже тогда делать: .replace(/\s/g, '').
Rocket Hazmat
12
@RocketHazmat да! правильный ответ! хотя это могло бы быть немного более эффективным: str.replace (/ \ s + / g, '')
jackocnr 08
3
@PitchiahNatarajan \sбудет соответствовать пробелам, табуляциям и новым строкам.
Rocket Hazmat
8

Вероятно, потому, что вы забыли реализовать решение в принятом ответе . Это код, который заставляет trim()работать.

Обновить

Этот ответ применим только к старым браузерам. Новые браузеры, по-видимому, поддерживают его trim()изначально.

Джон Конде
источник
2
Не обязательно, в некоторых браузерах он встроен. :-P
Rocket Hazmat
1
Сейчас он присутствует в большинстве современных браузеров -> kangax.github.com/es5-compat-table
Мансе
1

Вы можете использовать метод замены Strings с регулярным выражением.

"Hello World ".replace(/ /g, "");

Метод replace () возвращает новую строку с некоторыми или всеми совпадениями шаблона, замененными на замену. Шаблон может быть строкой или регулярным выражением.

RegExp

  • / / - Пробелы для регулярного выражения

  • g - Глобальный флаг; найти все совпадения, а не останавливаться после первого совпадения

JSON C11
источник
1

Ты можешь использовать

"Hello World ".replace(/\s+/g, '');

trim()удаляет только конечные пробелы в строке (первый и последний в цепочке). В этом случае этот regExp работает быстрее, потому что вы можете удалить одно или несколько пробелов одновременно.

Если вы измените заменяющую пустую строку на '$', разница станет намного яснее:

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // $Q$W$E$R$TY$

Сравнение производительности - /\s+/gбыстрее. Смотрите здесь: http://jsperf.com/s-vs-s

ArlanG
источник
В настоящее время принятый ответ делает то же самое. Пожалуйста, представьте несколько соответствующих тестов, показывающих, что это быстрее, чем этот ответ, на что-либо большее, чем наносекунды.
Обезьяна-еретик
@HereticMonkey Обновлено!
ArlanG