首页与我联系

「短文」关于 replaceAll() 方法的使用总结

By 前端达人
Published in 1-JavaScript
September 02, 2022
1 min read
「短文」关于 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 的一部分引入。在 Chrome 85(2020 年 8 月)和 Node.js 15 中引入了对 String.prototype.replaceAll() 的支持。

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, 在字符串中找到匹配项的位置。
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 返回 undefined。可能是不再支持该参数。

当使用字符串调用 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.

前端达人公众号.jpg

注:本文属于原创文章,版权属于「前端达人」公众号及 qianduandaren.com 所有,未经授权,谢绝一切形式的转载


Tags

javascriptbasic
Previous Article
「CSS」如何制作专业级的 Hero Header 动效
前端达人

前端达人

专注前端知识分享

Table Of Contents

1
使用正则表达式
2
使用函数

相关文章

「短文」如何在 JavaScript 中随机数组
November 03, 2022
1 min

前端站点

VUE官网React官网TypeScript官网

公众号:前端达人

前端达人公众号