ECMAScript 2021(ES12)中新增的 String.prototype.replaceAll() 方法使用详解

在 ECMAScript 2021(ES12) 中,JavaScript 新增了一个 String.prototype.replaceAll() 方法。这个方法类似于 String.prototype.replace() 方法,但不同之处在于它会替换所有匹配的字符串,而不仅仅是第一个匹配。

在本文中,我们将详细介绍 String.prototype.replaceAll() 方法,并通过一些示例代码来演示它的用法。

基本语法

String.prototype.replaceAll() 方法的基本语法如下:

--------------------------- -------------

其中,searchValue 参数可以是一个普通字符串或者一个正则表达式,用于匹配要替换的部分。replaceValue 参数可以是一个字符串或者一个函数,用于指定替换的字符串。

用法示例

下面让我们来看一些使用示例吧。

替换普通字符串

首先,我们来看一个替换普通字符串的示例。假设我们有一个字符串 str,它包含多个相同的字符序列 abc,而我们想要把这些字符序列替换成另一个字符串 def。我们可以使用如下代码:

--- --- - ---- --- --- --- --- -----
--- ------ - --------------------- -------
--------------------

上面的代码会把 str 中所有的 abc 都替换成 def,然后输出:

---- --- --- --- --- ----

替换正则表达式

接下来,我们来看一些使用正则表达式的示例。

假设我们有一个字符串 str,它包含一组相同的日期字符串,格式为 YYYY-MM-DD。我们想要把这些日期字符串中的横线 - 替换成斜杠 /,可以用如下代码:

--- --- - ------------ ----------- ------------
--- ------ - -------------------- -----
--------------------

上面的代码使用了一个全局正则表达式 /-/g,其中 / 是需要替换的字符,而 g 表示 global,表示匹配所有出现的字符。然后输出:

------------ ----------- -----------

替换为函数返回值

最后,我们来看一些使用替换函数的示例。

假设我们有一个字符串 str,它包含一些需要替换的特定单词,比如 foobar。我们想要用一个函数来动态生成替换后的字符串,可以用如下代码:

--- --- - ---- - --- - -----
--- ------ - -------------------------------- ------- -- -
    ------ --------------------
---
--------------------

上面的代码使用了正则表达式 /\b(foo|bar)\b/g,表示匹配单词 foobar。然后我们把 replaceValue 参数设置成一个函数,该函数接收一个 match 参数,表示当前匹配到的子字符串,然后返回一个新的字符串。这里我们将匹配到的子字符串转换成大写字母形式,然后输出:

---- - --- - ----

结论

以上是使用 String.prototype.replaceAll() 方法的一些示例。虽然这个方法看起来很简单,但它可以帮助我们轻松地实现字符串替换的功能。尽管在实际项目中我们很少会使用到这么高级的字符串替换,但掌握这个方法还是非常有必要的。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672890d32e7021665e20b36e