Как убрать пробелы в строке? Например:
Входные данные:
'/var/www/site/Brand new document.docx'
Вывод:
'/var/www/site/Brandnewdocument.docx'
javascript
text
JLuiz
источник
источник
" ahm ed ".split('').filter(e => e.trim().length).join('')
Ответы:
Эта?
пример
Обновление: на основе этого вопроса это:
это лучшее решение. Он дает тот же результат, но делает это быстрее.
Регулярное выражение
\s
является регулярным выражением для «пробела» иg
является «глобальным» флагом, что означает соответствие ВСЕ\s
(пробелы).Отличное объяснение
+
можно найти здесь .Как примечание, вы можете заменить содержимое между одинарными кавычками на что угодно, поэтому вы можете заменить пробел любой другой строкой.
источник
.replace(/\s+/g, '')
чаще. Есть ли разница между этим и моим ответом?.replace(' ','')
что сработает. Очень признателен!+
имеет только 60 голосов, если кто-то тоже хочет его / ее.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.Нажмите здесь для рабочего примера
источник
Примечание. Хотя вы используете «g» или «gi» для удаления пробелов, оба ведут себя одинаково.
Если мы используем 'g' в функции замены, она проверит точное совпадение. но если мы используем 'gi', он игнорирует чувствительность к регистру.
для справки нажмите здесь .
источник
Хотя регулярные выражения могут быть медленнее, во многих случаях разработчик манипулирует только несколькими строками одновременно, поэтому скорость не имеет значения. Хотя / / быстрее, чем / \ s /, наличие символа \ s объясняет, что происходит с другим разработчиком, возможно, более четко.
Использование Split + Join позволяет в дальнейшем манипулировать цепочкой.
источник