JavaScript 中的字符串操作函数 replaceAll() 介绍和使用

发布于 2022-06-07 23:27:22 字数 2681 浏览 1086 评论 0

要替换 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 使用以下参数调用该函数:

  1. match,函数找到的匹配搜索条件的内容。
  2. pN/$N,其中 N 是带括号的捕获组找到的第 n 个字符串。 所以例如 /(\a+)(\b+)/ 有两个。
  3. offset,在字符串中找到匹配项的位置。
  4. 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 个参数调用替换函数:

  1. match
  2. offset
  3. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

三生一梦

暂无简介

文章
评论
25 人气
更多

推荐作者

泛泛之交

文章 0 评论 0

音栖息无

文章 0 评论 0

荆棘i

文章 0 评论 0

泛滥成性

文章 0 评论 0

我还不会笑

文章 0 评论 0

假扮的天使

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文