Замена всех запятых в строке JavaScript: метод replace()
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для удаления всех запятых из строки воспользуйтесь методом .replace(/,/g, "")
. Флаг /g
в регулярном выражении обеспечивает глобальное удаление указанных знаков пунктуации.
let str = "яблоко, банан, вишня";
str = str.replace(/,/g, "");
// Результирующая строка: "яблоко банан вишня"
Откройте для себя все преимущества replaceAll
В современном JavaScript присутствует полезный метод String.prototype.replaceAll()
, который удаляет все вхождения заданной подстроки, не требуя использования регулярных выражений.
let str = "яблоко, банан, вишня";
str = str.replaceAll(",", "");
// Результат применения replaceAll: "яблоко банан вишня"
Обход особенностей символов регулярных выражений
Такие символы, как .
, *
или +
в регулярных выражениях, могут создавать сложности при выполнении замены, если они не экранированы должным образом. В этом случае пригодится функция экранирования:
function escapeRegex(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
let str = "яблоко, банан, вишня, и ещё.";
str = str.replace(new RegExp(escapeRegex(","), 'g'), "");
// После применения экранирования: "яблоко банан вишня и ещё."
Рабочая связка функций split и join
Если возникают проблемы совместимости replace
или replaceAll
, эффективным решением станет сочетание split()
и join()
.
let str = "яблоко, банан, вишня";
str = str.split(",").join("");
// Связка split и join справляется с задачей безупречно: "яблоко банан вишня"
Метод split
преобразует строку в массив, метод join
– обратно объединяет его в строку, по сути, выполняя операцию сборки мозаики.
Гибкость конструктора RegExp
Создавая объект регулярного выражения через RegExp
, вы делаете свой код переиспользуемым и более организованным:
const commaRegex = new RegExp(",", "g");
let str = "яблоко, банан, вишня";
str = str.replace(commaRegex, "");
// Результат при использовании объекта RegExp: "яблоко банан вишня"
Оглядываемся назад
Метод replaceAll()
является относительно новым и на данный момент не поддерживается во всех браузерах. В данной ситуации полезными станут полифиллы:
if (!String.prototype.replaceAll) {
String.prototype.replaceAll = function(str, newStr) {
if (typeof str === 'string') {
return this.split(str).join(newStr);
}
return this.replace(new RegExp(str, 'g'), newStr);
};
}
// С применением полифилла старые браузеры тоже справятся с удалением всех запятых.
Визуализация
Представьте себе процесс удаления запятых из строки как рабочий конвейер на фабрике:
Исходная строка: "🍎,🥕,🍌,🍇"
Следуя логике Супер Удалителя Запятых ™️:
Итоговая строка: "🍎🥕🍌🍇"
Превратитесь в этот конвейер, убирающий разделители и соединяющий продукты без зазоров!
Полезные материалы
- String.prototype.replace() – JavaScript | MDN — подробная информация о методе
replace()
. - How do I replace all occurrences of a string in JavaScript? – Stack Overflow — подходящие обсуждения на Stack Overflow.
- RegExp.prototype.global – JavaScript | MDN — узнайте больше о глобальном флаге 'g'.
- ECMAScript 2015 Language Specification – ECMA-262 6th Edition — документация ES6.
- Строки – JavaScript.info — всё, что знает про строки JavaScript.
- Магия шаблонных строк в ES6 | Блог для разработчиков от Chrome — для любителей красивого кода.