Как убрать пробелы в строке js
Перейти к содержимому

Как убрать пробелы в строке js

String.prototype.trim()

Метод trim() удаляет пробельные символы с начала и конца строки. Пробельными символами в этом контексте считаются все собственно пробельные символы (пробел, табуляция, неразрывный пробел и прочие) и все символы конца строки (LF, CR и прочие).

Синтаксис

Описание

Метод trim() возвращает строку с вырезанными пробельными символами с её концов. Метод trim() не изменяет значение самой строки.

Примеры

Пример: использование метода trim()

Следующий пример покажет строку ‘foo’ :

Полифил

Запуск следующего кода до любого другого создаст метод trim() , если он ещё не реализуется браузером.

JS Удалить все пробелы в тексте кроме первого встречающегося

Как удалить все пробелы в тексте кроме первого встречающегося?

user avatar

Вариант на чистой регулярке без использования функции

Здесь первая группа захвата (^[^ ]* ) (она захватит текст от начала строки до первого пробела + сам пробел) отработает только один раз и будет вставлена в результирующую строку без изменений $1 , а затем все встреченные пробелы [ ]+ будут удалены, так как первая группа захвата будет возвращать пустоту.

Счетчик на пробелы повесить 😉

Современный подход

Можно воспользоваться шаблоном неизвестной длины в блоке предварительного просмотра назад:

См. пример работы выражения. (?<=\s.*?) – блок предварительного просмотра назад, который находит позицию в строке, сразу перед которой есть пробельный символ, за которым следует 0 и более любых символов, как можно меньше, а \s+ находит 1 и более пробельных символов.

Старый ответ

Так как сам движок регулярных выражений не имеет представления о том, какое совпадение по счёту он находит, необходимо самому добавить флаг и установить на true , если первое совпадение уже найдено.

Вот пример удаления последовательностей пробелов кроме первой:

Если необходимо оставить только первый пробел из первой последовательности, замените выражение на

Обратите внимание на то, что \s находит любые пробельные символы, и если необходимо удалить только обычные пробелы (символ \x20 ), замените на / / (см. ответ @Visman). ‘`.

Есть способ обойтись без счётчика и без флажка. Используя (^\S*\s*)?\s+ , можно проверить, была ли захвачен шаблон первой подмаски, и, если да, оставить, иначе — удалить:

Подробности первой регулярки

  • (^\S*)? — захватывающая группа №1, 1 или 0 совпадений (необязательная), находит начало текста и 0 и более символов, отличных от пробелов
  • \s+ — 1 и более пробелов.

Во второй регулярке — (^\S*)?(?!^)\s — находится та же первая захватывающая группа, после которой стоит проверка на начало строки ( (?!^) ) (если мы в начале строки, следующий пробел пропускается), а \s найдет только один пробельный символ.

Как удалить пробелы из строки с помощью JavaScript?

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

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

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

\s — это regex для «пробел», и g является» глобальным » флагом, что означает match ALL \s (пробелы).

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

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

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

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

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

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

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

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

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

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

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

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