【JS字符串】replaceAll() – 将所有出现的与模式匹配的子串替换为新的
在本教程中,您将了解 String replaceAll() 方法,该方法用新字符串替换所有出现的子字符串。
JavaScript字符串replaceAll()方法介绍
String replace() 方法允许您用新子字符串替换字符串中第一次出现的子字符串。
要用新子串替换所有出现的子串,您可以重复调用 replace() 方法或使用带有全局标志 (g) 的正则表达式。
ES2021 引入了 String replaceAll() 方法,该方法返回一个新字符串,其中所有匹配的模式都被替换:
String.prototype.replaceAll(pattern, replacement)
pattern可以是字符串或正则表达式。 当pattern为正则表达式时,需要包含全局标志(g); 否则,replaceAll() 将抛出异常。
假设您犯了一个错误,应该使用 replace() 方法来替换仅与pattern匹配的第一个匹配项。
替换参数可以是字符串或将为每个匹配项调用的回调函数。
当替换为回调函数时,它具有以下形式:
replacement(match, offset, str)
replacement回调具有以下参数:
- match 是匹配的子串。
- offset 是原始字符串中匹配子字符串的偏移量。 例如,如果原始字符串是“Hello”,匹配的子字符串是“ll”,那么偏移量将为 2。
- str 是原始字符串。
与 replace() 方法一样,replaceAll() 方法不会更改原始字符串。 它返回新的全新字符串,其中的模式被替换。
JavaScript String replaceAll() 例子
让我们举一些使用 JavaScript String replaceAll() 方法的例子。
1) 简单的 JavaScriptString replaceAll() 例子
以下示例使用 String replaceAll() 方法将字符串 JS 替换为字符串 JavaScript 中的字符串 ‘JS will, JS will, JS will rock you’:
let str = ‘JS will, JS will, JS will rock you.’;
let newStr = str.replaceAll(‘JS’,’JavaScript’);console.log(newStr);
输出:
JavaScript will, JavaScript will, JavaScript will rock you.
2) JavaScript String replaceAll() 带回调函数的例子
以下示例使用 String replaceAll() 方法通过正则表达式搜索子字符串。 它用回调函数确定的特定替换替换每个匹配项:
let str = ‘JS will, Js will, js will rock you.’;
let pattern = /js/gi;
str.replaceAll(pattern, function(match, offset, str) {
if(match === ‘JS’) return ‘JavaScript’;
if(match === ‘Js’) return ‘Javascript’;
if(match === ‘js’) return ‘javascript’;
return ”;
});console.log(newStr);
输出:
JavaScript will, Javascript will, javascript will rock you.
看看这个程序是怎么运行的:
正则表达式 /js/gi 匹配任何包含子字符串 JS 的字符串,不区分大小写,即 JS、Js 或 js。
replaceAll() 方法用替换回调的返回值替换子字符串 JS、Js 和 js。
总结
使用 JavaScript 字符串 replaceAll() 方法用字符串中的新子字符串替换所有出现的子字符串。