Ответы:
Эта?
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
является «глобальным» флагом, что означает соответствие ВСЕ \s
(пробелы).
Отличное объяснение +
можно найти здесь .
Как примечание, вы можете заменить содержимое между одинарными кавычками на что угодно, поэтому вы можете заменить пробел любой другой строкой.
.replace(/\s+/g, '')
чаще. Есть ли разница между этим и моим ответом?
.replace(' ','')
что сработает. Очень признателен!
+
имеет только 60 голосов, если кто-то тоже хочет его / ее
.replace('/\s+/g', '')
потому что оно попытается найти эту буквальную строку. Это сбило меня с толку раньше ...
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.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
решение. Изменение к
\s
или добавить +
или i
к РегВыр замедляет обработку.
Для строки около 3 миллионов символов:
Вы можете запустить его на своем компьютере: https://jsperf.com/remove-string-spaces/1
Следующий ответ @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, '')
way faster
. Я запустил тест, и он только на 2,19% быстрее, на моем Firefox 61.
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' в функции замены, она проверит точное совпадение. но если мы используем 'gi', он игнорирует чувствительность к регистру.
для справки нажмите здесь .
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";
" ahm ed ".split('').filter(e => e.trim().length).join('')