在 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
,它包含一些需要替换的特定单词,比如 foo
和 bar
。我们想要用一个函数来动态生成替换后的字符串,可以用如下代码:
--- --- - ---- - --- - ----- --- ------ - -------------------------------- ------- -- - ------ -------------------- --- --------------------
上面的代码使用了正则表达式 /\b(foo|bar)\b/g
,表示匹配单词 foo
或 bar
。然后我们把 replaceValue
参数设置成一个函数,该函数接收一个 match
参数,表示当前匹配到的子字符串,然后返回一个新的字符串。这里我们将匹配到的子字符串转换成大写字母形式,然后输出:
---- - --- - ----
结论
以上是使用 String.prototype.replaceAll() 方法的一些示例。虽然这个方法看起来很简单,但它可以帮助我们轻松地实现字符串替换的功能。尽管在实际项目中我们很少会使用到这么高级的字符串替换,但掌握这个方法还是非常有必要的。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672890d32e7021665e20b36e