Как заменить текст в строке
Короткий ответ
Метод replaceAll() заменяет все вхождения подстроки:
console.log('cat and cat'.replaceAll('cat', 'dog'));Результат:
dog and dogТолько первое вхождение
Метод replace() со строкой заменяет только первое совпадение:
console.log('cat and cat'.replace('cat', 'dog'));Результат:
dog and catБез учёта регистра
Используйте регулярное выражение с флагами g (все вхождения) и i (без учёта регистра):
console.log('Hello, hello'.replace(/hello/gi, 'Hi'));Результат:
Hi, HiЗамена функцией
Вторым аргументом может быть функция, которая строит замену из найденного текста:
const text = 'Prices: 10 and 25';
console.log(text.replace(/\d+/g, (match) => `$${match}`));Результат:
Prices: $10 and $25Частая ошибка
replaceAll() с регулярным выражением требует флаг g, иначе выбрасывает ошибку:
try {
'a-b-c'.replaceAll(/-/, '+');
} catch (error) {
console.log(error.name);
}
console.log('a-b-c'.replaceAll(/-/g, '+'));Результат:
TypeError
a+b+cФункции из этого ответа
- String.prototype.replaceAll — Заменяет все вхождения подстроки на другую строку.
- String.prototype.replace — Заменяет первое совпадение (или все — с флагом g у регулярного выражения).