В этом руководстве вы узнаете, как использовать метод JavaScript String replace() для замены подстроки в строке на новую.
Синтаксис:
let newStr = str.replace(substr, newSubstr);
Метод JavaScript String replace() возвращает новую строку с подстрокой ( substr ), замененной новой ( newSubstr ).
Обратите внимание, что метод replace() не изменяет исходную строку. Он возвращает новую строку.
Примеры
В следующем примере функция replace() используется для замены JS в строке ‘JS will, JS will rock you’ новой подстрокой вJavaScript :
let str = 'JS will, JS will rock you!';
let newStr = str.replace('JS','JavaScript');
console.log(newStr);Выход:
JavaScript will, JS will rock you!
Как видно из вывода, только первое вхождение подстроки JS было заменено новой подстрокой JavaScript.
Чтобы заменить все вхождения подстроки в строку новой, необходимо использовать регулярное выражение.
Использование регулярных выражений
Метод replace() полностью поддерживает регулярные выражения:
let newStr = str.replace(regexp, newSubstr);
В этом синтаксисе метод replace() находит все совпадения в строке str, заменяет их на newSubstr и возвращает новую строку ( newStr ).
В следующем примере используется глобальный флаг ( g ) для замены всех вхождений JS в str на JavaScript :
let str = 'JS will, JS will rock you!'; let newStr = str.replace(/JS/g,'JavaScript'); console.log(newStr);
Выход:
JavaScript will, JavaScript will rock you!
Если вы хотите игнорировать случаи поиска и замены, вы можете использовать флаг игнорирования ( i ) в регулярном выражении следующим образом:
let str = 'JS will, Js will rock you!'; let newStr = str.replace(/JS/gi,'JavaScript'); console.log(newStr);
Выход:
JavaScript will, JavaScript will rock you!
Использование функции замены
Вместо того, чтобы передавать newSubstr во второй параметр метода replace(), вы можете передать функцию замены следующим образом:
let newStr = str.replace(substr | regexp, replacer);
В этом синтаксисе метод будет вызыватьreplacer функцию замены после выполнения сопоставления. Затем он использует результат этой функции в качестве строки замены.
Если вы используете глобальный флаг( g ) в регулярном выражении, метод replace() будет replacer функцию замены для каждого совпадения. Например, если есть три совпадения, метод трижды вызовет функцию replacer().
Синтаксис:
function replacer(match, p1, p2, ..., offset, string);
Ниже приведены значения каждого параметра:
match: это совпавшая подстрока.p1,p2, …pn— это n-я строка, найденная группой захвата в скобках, предоставленной регулярным выражением.offset: это смещение совпадающей подстроки во всей искомой строке.string: проверяется вся строка.
В следующем примере функция replace() используется для преобразования подстрок apples и bananas в верхний регистр. Она передает функцию-заменитель в функцию replace() :
let str = "I like to eat, eat, eat apples and bananas";
let re = /apples|bananas/gi;
let newStr = str.replace(re,(match) => {
console.log({match});
return match.toUpperCase();
});
console.log(newStr);Выход:
{match: "apples"}
{match: "bananas"}
I like to eat, eat, eat APPLES and BANANAS
Заключение
- Используйте метод
replace()для возврата новой строки с заменой подстроки на новую. - Используйте регулярное выражение с глобальным флагом (
g), чтобы заменить все вхождения подстроки на новую.
