JavaScript 中的字符串操作函数 replaceAll() 介绍和使用
要替换 JavaScript 中的字符串,您可以使用 replaceAll()
功能。
第一个参数是定义需要替换的正则表达式/模式或字符串。
第二个参数可以是作为替换的字符串,也可以是将被调用以创建替换的函数。
const sentence = 'The world is a cruel place.';
sentence.replaceAll('cruel', 'wonderful'); // The world is a wonderful place.
// Strings are immutable in JavaScript, so the original string stays the same
sentence; // The world is a cruel place.
请记住, replaceAll()
是 JavaScript 的一个相对较新的补充,作为 ES2021 。
支持 String.prototype.replaceAll()
在 Chrome 85(2020 年 8 月)和 Node.js 15 中引入。
自 2022 年起,我们 不 建议使用 replaceAll()
由于支持有限。
利用 String.prototype.replace()
用正则表达式代替。
const sentence = 'The world is a cruel place.';
sentence.replace(/cruel/g, 'wonderful'); // The world is a wonderful place.
使用正则表达式
如果您想涵盖更多需要替换的情况,可以使用正则表达式代替字符串。
重要的是不要让您的正则表达式必须具有 g
标志启用。
如果没有,JavaScript 会抛出一个 TypeError
。
const sentence = 'The world is a cruel place. Only cruel people thrive here.';
sentence.replaceAll(/cruel/ig, 'wonderful'); // The world is a wonderful place. Only wonderful people thrive here.
// TypeError: String.prototype.replaceAll called with a non-global RegExp argument
sentence.replaceAll(/cruel/i, 'wonderful');
使用函数
调用的函数会针对它找到的每个匹配项运行。 JavaScript 使用以下参数调用该函数:
- match,函数找到的匹配搜索条件的内容。
- pN/$N,其中 N 是带括号的捕获组找到的第 n 个字符串。 所以例如
/(\a+)(\b+)/
有两个。 - offset,在字符串中找到匹配项的位置。
- string,被检查的字符串。
const sentence = 'abcd abcd';
sentence.replaceAll(/(a+)(b+)/ig, function(match, p1, p2, offset, string) {
match; // ab
p1; // a
p2; // b
offset; // 0 then 5 on the next iteration
string; // abcd abcd
return 'Hello';
}) // Hellocd Hellocd
但是,在运行此示例时, namedGroups
返回未定义。 可能是不再支持该参数。什么时候 replaceAll()
使用字符串调用时,JavaScript 使用以下 3 个参数调用替换函数:
- match
- offset
- string
const sentence = 'The world is a cruel place. Only cruel people thrive here.';
sentence.replaceAll('cruel', function(match, offset, string) {
match; // cruel
offset; // 15 then 33
string; // The world is a cruel place. Only cruel people thrive here.
return match.toUpperCase();
}); // The world is a CRUEL place. Only CRUEL people thrive here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 使用 ChartJS 设置图表大小
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论