replaceAll() в JavaScript
- Что делает replaceAll()
- Синтаксис
- Замена всех совпадений
- Отличие от replace()
- Удаление фрагментов
- Если совпадение не найдено
- Регулярное выражение
- Строка не меняется
- Итого
replaceAll() заменяет все найденные совпадения в строке.
let text = 'кот и кот';
let result = text.replaceAll('кот', 'пес');
console.log(result);
Результат:
пес и пес
Метод нашел оба слова ‘кот’ и заменил каждое на ‘пес’.
Что делает replaceAll()
replaceAll() ищет фрагмент строки и заменяет все его вхождения.
let message = 'JS, JS и еще раз JS';
console.log(message.replaceAll('JS', 'JavaScript'));
Результат:
JavaScript, JavaScript и еще раз JavaScript
Метод удобно использовать, когда один и тот же фрагмент может встретиться в строке несколько раз.
Синтаксис
Основная запись выглядит так:
string.replaceAll(searchValue, newValue);
searchValue - что нужно найти.
newValue - на что нужно заменить.
let text = 'red red red';
console.log(text.replaceAll('red', 'blue'));
Результат:
blue blue blue
Замена всех совпадений
Главное отличие replaceAll() в том, что он не останавливается после первого найденного фрагмента.
let text = 'день, день, день';
console.log(text.replaceAll('день', 'ночь'));
Результат:
ночь, ночь, ночь
Заменились оба совпадения.
Отличие от replace()
replace() с обычной строкой заменяет первое совпадение, а replaceAll() - все.
let text = 'кот кот кот';
console.log(text.replace('кот', 'пес'));
console.log(text.replaceAll('кот', 'пес'));
Результат:
пес кот кот
пес пес пес
Если нужно заменить только первое совпадение, подойдет replace(). Если все - replaceAll().
Удаление фрагментов
Чтобы удалить все найденные фрагменты, замените их на пустую строку.
let phone = '+7 (999) 123-45-67';
console.log(phone.replaceAll('-', ''));
Результат:
+7 (999) 1234567
Так можно убрать все одинаковые символы или части строки.
Если совпадение не найдено
Если нужного фрагмента нет, replaceAll() вернет строку без изменений.
let text = 'JavaScript';
console.log(text.replaceAll('HTML', 'CSS'));
Результат:
JavaScript
Регулярное выражение
Первым аргументом можно передать регулярное выражение, но у него должен быть флаг g.
let text = 'Пароль: 12345';
console.log(text.replaceAll(/\d/g, '*'));
Результат:
Пароль: *****
Без флага g метод выдаст ошибку. Если регулярные выражения пока не нужны, используйте обычные строки.
Строка не меняется
replaceAll() не изменяет исходную строку. Он возвращает новую строку.
let text = 'кот и кот';
text.replaceAll('кот', 'пес');
console.log(text);
Результат:
кот и кот
Чтобы использовать результат, его нужно сохранить.
let text = 'кот и кот';
let result = text.replaceAll('кот', 'пес');
console.log(result);
Результат:
пес и пес
Итого
replaceAll() нужен, когда нужно заменить все совпадения в строке.
replaceAll(searchValue, newValue)ищет фрагмент и заменяет все его вхождения.- С обычной строкой
replaceAll()заменяет все совпадения. replace()заменяет первое совпадение,replaceAll()- все.- Если совпадение не найдено, строка вернется без изменений.
- Исходная строка не меняется.