「短文」如何在 JavaScript 中随机数组
November 03, 2022
1 min
要替换 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 使用以下参数调用该函数:
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 个参数调用替换函数:
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.
注:本文属于原创文章,版权属于「前端达人」公众号及 qianduandaren.com 所有,未经授权,谢绝一切形式的转载