在过去的 JavaScript 版本中,如果需要将一个字符串中的所有匹配项替换为新的字符串,我们通常使用正则表达式和 String.prototype.replace() 方法。但是在 ES11 中,新增了 String.prototype.replaceAll() 方法,它能够更为方便有效地替换字符串中所有的匹配项。
String.prototype.replaceAll() 方法的语法
String.prototype.replaceAll() 方法的语法如下:
str.replaceAll(regexp|substr, newSubStr|function)
其中,str 表示需要进行替换操作的字符串,regexp 或 substr 表示需要替换的正则表达式或子字符串,newSubStr 或 function 表示用来替换的新字符串或者替换字符串的回调函数。
需要注意的是,replaceAll() 方法会将所有匹配项都替换掉,并返回替换后的新字符串。
使用 String.prototype.replaceAll() 方法替换字符串中的所有匹配项
下面通过几个示例来演示如何使用 String.prototype.replaceAll() 方法替换字符串中的所有匹配项。
使用正则表达式
可以使用正则表达式来匹配需要被替换的字符串,代码如下:
const str = "hello world"; const newStr = str.replaceAll(/l/g, "L"); console.log(newStr); // "heLLo worLd"
上述代码中,/l/g 表示将字符串中所有的 "l" 进行匹配,并且 "g" 表示全局匹配。因此,通过 String.prototype.replaceAll() 方法,将所有的 "l" 替换为 "L"。
使用子字符串
除了正则表达式之外,还可以使用子字符串来进行替换操作。如下代码所示:
const str = "hello world"; const newStr = str.replaceAll("l", ""); console.log(newStr); // "heo word"
上述代码中,将所有的 "l" 替换为空字符串,即删除所有的 "l"。
使用回调函数
除了直接替换字符串之外,还可以使用回调函数进行字符串的替换操作。如下代码所示:
const str = "hello world"; const newStr = str.replaceAll(/(\w+)/g, (match, p1) => { return p1.toUpperCase(); }); console.log(newStr); // "Hello World"
上述代码中,正则表达式 /(\w+)/g 匹配所有的单词,并将其替换为其大写版本。
结语
在本文中,我们介绍了 ES11 中新增的 String.prototype.replaceAll() 方法,以及如何使用该方法来替换字符串中的所有匹配项。希望读者们能够通过本文对该方法有更加深入的了解,并且能够更加灵活地运用到自己的代码中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6792abc0504e4ea9bd673a4d