Как удалить пробелы из строки, используя JavaScript? - PullRequest
467 голосов
/ 11 мая 2011

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

Введите:

'/var/www/site/Brand new document.docx'

Выход:

'/var/www/site/Brandnewdocument.docx'

Ответы [ 8 ]

1002 голосов
/ 11 мая 2011

Это?

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, '');

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

Регулярное выражение

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

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

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

55 голосов
/ 11 мая 2011

var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

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

17 голосов
/ 31 января 2017

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

Итак

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

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

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

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


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

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

10 голосов
/ 13 июля 2018

КОРОТКИЙ и БЫСТРЫЙ : str.replace(/ /g, '');


Benchmark:

Вот мои результаты - (2018.07.13) MacOs High Sierra 10.13.3 для Chrome 67.0.3396 (64-разрядная версия), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-разрядная версия):

КОРОТКИЕ строки

Короткая строка, похожая на примеры из вопроса OP

enter image description here

Самым быстрым решением для всех браузеров является / /g (regexp1a) - Chrome 17,7M (операция / сек), Safari 10,1M, Firefox 8,8M. Самым медленным для всех браузеров было решение split-join. Измените на \s или добавьте + или i, чтобы регулярное выражение замедляло обработку.

длинные строки

Для строки около 3 миллионов символов:

  • regexp1a : Safari 50,14 операций в секунду, Firefox 18,57, Chrome 8,95
  • regexp2b : Safari 38.39, Firefox 19.45, Chrome 9.26
  • split-join : Firefox 26.41, Safari 23.10, Chrome 7.98,

Вы можете запустить его на своем компьютере: https://jsperf.com/remove-string-spaces/1

8 голосов
/ 05 июня 2015
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 голосов
/ 28 августа 2015
  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' в функции замены, она проверит точное совпадение. но если мы используем 'gi', он игнорирует чувствительность к регистру.

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

0 голосов
/ 14 июня 2019

Regex + Replace ()

Хотя регулярное выражение может быть медленнее, во многих случаях разработчик манипулирует только несколькими строками одновременно, поэтому скорость не имеет значения. Несмотря на то, что / / быстрее, чем / \ s /, наличие символа \ s объясняет, что происходит с другим разработчиком, возможно, более четко.

let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'

Split () + Join ()

Использование Split + Join позволяет дальнейшее цепное манипулирование строкой.

let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
0 голосов
/ 30 марта 2019

Хотя существуют способы использования регулярных выражений для удаления пробелов, существует простая функция, которая может удалить все пробелы, называемая .trim();:

var str = "abr a cadab ra";
str = str.trim();
//str = "abracadabra"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...