Javascript удалить все пробелы

Удалить все пробелы можно при помощи регулярных выражений и функции replace().

Пример

Например, есть слой с текстом и кнопка при нажатии на которую нужно будет все пробелы в слое удалить.

Во время решения задачи напишем функцию string del_spaces(string string) , которая возвращает строку string без пробелов.

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

Входные данные :

Выход:

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

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

Regex

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

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

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

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

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

var result = text.split(‘ ‘).join(”)

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

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

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

С другой стороны, s+ обрабатывает разнообразные символы пробела. Среди
и он также соответствует 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-разрядная версия):

Читайте также:  Nokia новые модели телефонов

Короткие строки

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

Самое быстрое решение для всех браузеров – это //g (regexp1a) – Chrome 17.7M (операция/сек), Safari 10.1M, Firefox 8.8M. Самым медленным для всех браузеров было решение split-join . + Изменить to 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,

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

Ввод: ‘/var/www/site/Brand new document.docx’
Вывод: ‘/var/www/site/Brandnewdocument.docx’

6 ответов

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

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

Regex

s – это регулярное выражение для "пробела", а g – это флаг «global», что означает совпадение с ALL s (пробелы).

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

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

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

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

var result = text.split(‘ ‘).join(”)

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

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

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

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

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

Читайте также:  Индезит производитель в россии

SHORTEST и FASTEST : 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 миллионов символов:

  • 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,

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

Если мы используем ‘g’ в функции замены, она проверит точное совпадение. но если мы используем ‘gi’, он игнорирует чувствительность к регистру.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector