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)

Практика:

  1. Убрать все цифры из строки
  2. Убрать лишние пробелы между словами в предложении
  3. Слова черное и белое берем в кавычки
  4. Оставить в строке кириллицу, латиницу и запятую
  5. Найти в строке числа и заменить их на квадраты чисел

results matching ""

    No results matching ""