replace
str.replace - находит подстроки, которые нужно поменять и выполняет замену, на строку или на результат работы функции
str.replace('нецензурные слова','***');
str.replace можно использовать для удаления каких-то включений из строки. Для этого нужно сделать замену на пустую строку
str.replace('спам','');
В качестве первого параметра может быть регулярное выражение
str.replace(/xxx/,'');
Параметры в строке замены Можно использовать следующие специальные сочетания в строке замены для работы с найденной подстрокой:
$& - вставляет совпавшую подстроку $` - вставляет часть строки, которая предшествует совпавшей подстроке $' - вставляет часть строки, которая следует за совпавшей подстрокой $n или $nn, где n/nn - десятичные цифры Вставляет n-ю скобку в совпадении, если первый аргумент - объект RegExp
$$ - вставляет "$"
Функция замены
Функция replace в качестве второго параметра может принимать функцию замены. В эту строку передается подстрока, соответствующая шаблону, значения подмасок, позиция подстроки в исходно строке и сама исходная строка. Результат, который вернет функция и будет подставляться вместо исходной строки.
Пример функции замены
function replacer(found, p1, p2, offset, s) {
return p1 +", "+ p2;
}
found - найденная строка, которая соответствует шаблону
p1, p2 - подстроки, которые соответствуют шаблону
offset - это позиция найденной строки в исходной строке
s - исходная строка, для которой мы вызываем str.replace
Напишем функцию, которая меняла бы два числа между, которыми плюс на их сумму. То есть строка "Великая загадка Вселенной равна 13+32-ти" должна замениться на "Великая загадка Вселенной равна 45-ти".
Для этого нам понадобится регулярное выражение, которое бы находило такую конструкцию. Мы ищем числа разделенные знаком вопроса. Число, если говорить о представлении в строке, это одна и более цифр, то есть \d+. Плюс между цифрами придется заэкранировать. То есть получим следующее регулярное выражение:
/\d+\+\d+/
Нам нужно будет доставать числа из найденной подстроки, поэтому нам понадобятся подмаски
/(\d+)\+(\d+)/
Далее нам понадобится функция замены следующего вида
function sumUp(pattern_string,first,second) {
return parseInt(first)+parseInt(second)
}
Далее нам необходимо вызвать str.replace
var str = "Найдем результат 23+52 и выведем на экран";
var result = str.replace(/(\d+)\+(\d+)/,sumUp)
Обратите внимание, что str.replace не меняет исходную строку, а лишь возвращает результат замены.
Модификатор g
Если мы запускаем запрос без модификатора g, то замена происходит только по первому найденому значению. Модификатор g позволяет сделать замены во всей строке.
Предыдущий пример будет выглядеть вот так:
var result = str.replace(/(\d+)\+(\d+)/g,sumUp)
Практика:
- Убрать все цифры из строки
- Убрать лишние пробелы между словами в предложении
- Слова черное и белое берем в кавычки
- Оставить в строке кириллицу, латиницу и запятую
- Найти в строке числа и заменить их на квадраты чисел