Удаление всех пробелов из текста в JS: проблемы с REPLACE()
Быстрый ответ
Чтобы удалить все пробельные символы из строки в JavaScript, можно воспользоваться конструкцией .replace(/\s+/g, '')
:
let spaceKiller = 'Пробелы должны умереть!'.replace(/\s+/g, '');
console.log(spaceKiller); // 'Пробелыдолжныумереть!'
После применения данной конструкции в строке не останется ни пробелов, ни символов табуляции, ни символов перевода строки — только непрерывная последовательность символов.
Расшифровка метода
Проанализируем действия, которые выполняются для удаления пробелов из строки. Пробелы, и другие пробельные символы как табуляция и перевод строки, оказываются в поле зрения метода .replace()
.
Современный JavaScript
В последних версиях JavaScript есть метод .replaceAll()
. Однако, он не работает с регулярными выражениями. .replaceAll()
не применяется в глобальном поиске, поэтому рекомендуется использовать проверенный временем .replace()
.
Элементы регулярного выражения
Рассмотрим каждый элемент в регулярном выражении /\s+/g
:
\s
соответствует любому пробельному символу: пробел, табуляция или перевод строки.+
указывает на последовательность одинаковых символов.g
— это глобальный режим, обозначающий, что поиск и замена будет проводиться по всем вхождениям символа.
Обратная совместимость
Учтите, что поддержка replaceAll()
браузерами ограничена. Пользуйтесь .replace()
для обеспечения обратной совместимости, так как он надежно функционирует во всех веб-браузерах.
Визуализация
Удаление пробельных символов можно примерно представить как избавление строки от ненужного содержимого:
Исходная строка: [🔤, 🔤, 📦, 🔤, 📦📦, 🔤, 🔤, 🔤]
Применение replace
трансформирует её:
- До: [🔤, 🔤, 📦, 🔤, 📦📦, 🔤, 🔤, 🔤]
+ После: [🔤, 🔤, 🔤, 🔤, 🔤, 🔤, 🔤]
Применение функции .replace()
в JavaScript:
let compressedCargo = text.replace(/\s+/g, '');
И в результате получаем: непрерывную последовательность символов. 🚂💨
Обработка исключительных ситуаций
С некоторыми особенностями вам придется столкнуться при обработке строк. Готовьтесь ко всему!
Пустые строки
Пустая строка — это не проблема. Метод .replace()
не приведет к ошибке.
Очистка начала и конца строки
Если вам требуется очистить только начало и конец строки, используйте .trim()
.
let frontierSweep = ' Свидетель пробела '.trim();
console.log(frontierSweep); // 'Свидетель пробела'
Особенности replace()
Если вашей целью является не регулярное выражение, а конкретный символ или последовательность символов, то .replace()
заменит только первое вхождение. Итак, не ожидайте, что все подходящие символы будут заменены!
let misguidedHit = 'Секрет успеха'.replace(' ', '');
console.log(misguidedHit); // 'Секретуспеха'
Полезные материалы
- String.prototype.replace() – JavaScript | MDN — Инструкция MDN по применению метода
replace()
. - Remove ALL white spaces from text – Stack Overflow — Советы от опытных разработчиков на Stack Overflow.
- regex101: build, test, and debug regex — Онлайн-ресурс для тренировки в работе с регулярными выражениями.
- Strings – JavaScript.info — Подробное руководство по работе со строками в JavaScript.
- Regular expressions – JavaScript | MDN — Глубокое погружение в работу с регулярными выражениями в JavaScript.
- How To Work with Strings in JavaScript | DigitalOcean — Руководство об управлении строками и удалении из них пробельных символов.