【发布时间】:2021-04-28 08:34:16
【问题描述】:
ECMAScript 2021 添加了一个新的字符串函数replaceAll。
很久以前,在不远的星系中,人们使用split + join 或正则表达式来replace all occurences of a string。
我创建了以下示例以将新方法与旧方法进行比较。
虽然我可以在第一种情况下看到一些差异,例如我不能将 replacement patterns 与 split + join 一起使用,或者我需要使用 RegExp(str,"g") 转义特殊字符,但我看不出有任何区别第二种情况。
新方法和旧方法有什么区别(行为差异、性能、浏览器兼容性...)?
const source = "abcdefabcdef";
const str1 = "abc", str2 = "xyz";
const reg1 = /abc/g, reg2 = "xyz";
//Case 1 : When we want to replace a string by another
console.log(source.split(str1).join(str2));
console.log(source.replace(new RegExp(str1,"g"),str2));
//versus
console.log(source.replaceAll(str1,str2));
//Case 2 : When we want to use a regular expression
console.log(source.replace(reg1,reg2));
//versus
console.log(source.replaceAll(reg1,reg2));
//Result = "xyzdefxyzdef"
【问题讨论】:
-
如果我没记错的话,这个方法主要是为了捕捉 not 之前添加
g标志的错误(即这是一个实际的运行时错误,与可能的逻辑错误相比)或者在代码运行时可能不会出现)。浏览器支持:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。它也比带有g标记的正则表达式的replace更明确。 -
请只问 1 个问题。
标签: javascript string replaceall ecmascript-2021