Как удалить пробелы из строки, используя JavaScript?

330

Как удалить пробелы в строке? Например:

Вход: '/var/www/site/Brand new document.docx'
Выход: '/var/www/site/Brandnewdocument.docx'

Спасибо

Теги:
text

8 ответов

708
Лучший ответ

Это?

str = str.replace(/\s/g, '');

Пример

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s/g, '') );

Обновление: На основе этого вопроса:

str = str.replace(/\s+/g, '');

- лучшее решение. Он производит тот же результат, но делает это быстрее.

Regex

\s - это регулярное выражение для "пробелов", а g - это "глобальный" флаг, что означает соответствие всем \s (пробелам).

Отличное объяснение + можно найти here.

В качестве дополнительной заметки вы можете заменить контент между одинарными кавычками на все, что хотите, чтобы вы могли заменить пробелы любой другой строкой.

  • 0
    @Gaurav Я посмотрел похожие ответы на SO, и я вижу .replace(/\s+/g, '') чаще. Есть ли разница между этим и моим ответом?
  • 0
    в этом случае нет разницы. Но + используется для поиска хотя бы одного вхождения.
Показать ещё 5 комментариев
34
var a = "/var/www/site/Brand new document.docx";
alert(a.split(' ').join(''));
alert(a.replace( /\s/g, "")); 

Два способа сделать это!

  • 2
    Мне понравились split () и join ().
7
var input = '/var/www/site/Brand new document.docx';

//remove space
input = input.replace(/\s/g, '');

//make string lower
input = input.toLowerCase();

alert(input);

Нажмите здесь для рабочего примера

2

Вы можете попробовать:

input.split(' ').join('');
2

После ответа @rsplak: на самом деле использование split/join намного быстрее, чем при использовании regexp. См. Производительность тестовый пример

So

var result = text.split(' ').join('')

работает быстрее, чем

var result = text.replace(/\s+/g, '')

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


С другой стороны, \s+ обрабатывает более широкий спектр символов пространства. Среди \n и \t он также соответствует символу \u00a0, и это то, что   включается, при получении текста с помощью textDomNode.nodeValue.

Итак, я думаю, что заключение здесь можно сделать следующим образом: если вам нужно только заменить пробелы ' ', используйте split/join. Если могут быть разные символы класса символов - используйте replace(/\s+/g, '')

  • 0
    это очень не way faster . Я запустил тест, и он только на 2,19% быстрее, на моем Firefox 61.
2
  var output = '/var/www/site/Brand new document.docx'.replace(/ /g, ""); 
    or
  var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");

Примечание. Хотя вы используете "g" или "gi" для удаления пробелов, они ведут себя одинаково.

Если мы используем 'g' в функции replace, он будет проверять точное соответствие. но если мы используем "gi", он игнорирует чувствительность к регистру.

для справки нажмите здесь.

1

Я предпочитаю использовать Lodash для удаления пробелов из строки:

var input  = '/var/www/site/Brand new document.docx',
    result = _.trim(input);
0

Если вы хотите удалить пробелы с обоих концов строки (но не внутри строки), используйте trim() methodode, например

"   a  b  c   ".trim() //   = "a  b  c"

Примечание:
Вы также можете прочитать о trimLeft и trimRight, которые удаляют пробелы только с левой/правой стороны соответственно, но обратите внимание, что эти два являются нестандартными и не соответствуют стандартным трекам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню