Как убрать пробелы в строке? Например:
Входные данные :
'/var/www/site/Brand new document.docx'
Выход:
'/var/www/site/Brandnewdocument.docx'
Как убрать пробелы в строке? Например:
Входные данные :
'/var/www/site/Brand new document.docx'
Выход:
'/var/www/site/Brandnewdocument.docx'
Это?
str = str.replace(/\s/g, '');
Пример
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') );
Следующий ответ @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, '')
Кратчайший и быстрый: str.replace(//g, '');
Ориентир:
Вот мои результаты - (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
Самое быстрое решение для всех браузеров - это //g
(regexp1a) - Chrome 17.7M (операция/сек), Safari 10.1M, Firefox 8.8M. Самым медленным для всех браузеров было решение split-join
. + Изменить to
\s
или добавление +
или i
к регулярному выражению замедляет обработку.
Для строки около 3 миллионов символов:
Вы можете запустить его на своем компьютере: https://jsperf.com/remove-string-spaces/1
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
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", он игнорирует чувствительность к регистру.
для справки нажмите здесь.
Вы можете попробовать:
input.split(' ').join('');
Я предпочитаю использовать Lodash для удаления пробелов из строки:
var input = '/var/www/site/Brand new document.docx',
result = _.trim(input);
Если вы хотите удалить пробелы с обоих концов строки (но не внутри строки), используйте trim() methodode, например
" a b c ".trim() // = "a b c"
Примечание:
Вы также можете прочитать о trimLeft и trimRight, которые удаляют пробелы только с левой/правой стороны соответственно, но обратите внимание, что эти два являются нестандартными и не соответствуют стандартным трекам.
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";
Хотя есть способы использовать регулярные выражения для удаления пробелов, есть простая функция, которая может удалить все пробелы, называемая .trim();
:
var str = "abr a cadab ra";
str = str.trim();
//str = "abracadabra"