【JS字符串】replace() – 用新的字符串替换字符串中的子字符串

JavaScript字符串2年前 (2023)更新 admin
2,561 0

在本教程中,您将了解如何使用 JavaScript String replace() 方法将字符串中的子字符串替换为新子字符串。

JavaScript String replace() 方法介绍

下面显示了 replace() 方法的语法:

let newStr = str.replace(substr, newSubstr);

JavaScript String replace() 方法返回一个新字符串,其中的子字符串 (substr) 被新字符串 (newSubstr) 替换。

请注意,replace() 方法不会更改原始字符串。 它返回一个新字符串。

JavaScript String replace() 示例

下面的例子使用 replace() 来替换字符串 ‘JS will, JS will rock you’ 中的 JS 和新的子字符串 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) 将 str 中出现的所有 JS 替换为 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);

在此语法中,replace() 方法将在执行匹配后调用替换函数。 然后它使用此函数的结果作为替换字符串。

如果在正则表达式中使用全局标志 (g),则 replace() 方法将为每个匹配项调用替换函数。

例如,如果有三个匹配项,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) 的正则表达式将所有出现的子字符串替换为新子字符串。

© 版权声明

相关文章

暂无评论

暂无评论...