在 JavaScript 中替换所有指定字符 3 种方法( 二 )


replaceAll(search, replaceWith)字符串方法用replaceWith替换所有的search字符串,没有任何变通方法 。
我们把所有的duck换成goose:
const search = 'duck'const replaceWith = 'goose';const result = 'duck duck go'.replaceAll(search, replaceWith);result; // => 'goose goose go''duck duck go'.replaceAll('duck', 'goose')将所有出现的'duck'字符串替换为'goose',这是简单明了的解决方案 。
3.1 replaceAll()与replace()的区别字符串方法replaceAll(search, replaceWith)和replace(search, replaceWith)的行为方式是一样的,除了两件事:

  1. 如果search参数是一个字符串,那么replaceAll()用replaceWith替换所有出现的search,而replace()只替换第一次出现的search 。
2.如果search参数是一个非全局正则表达式,那么replaceAll()将抛出一个TypeError 异常 。
4. 总结替换所有出现的字符串应该很容易 。但是,JavaScript 很久一段时间没有提供这种方法 。
一种方法是通过搜索字符串将字符串拆分为多个块,将字符串重新连接,然后在块之间放置替换字符串:string.split(search).join(replaceWith) 。这种方法有效,但是很麻烦 。
另一种方法是将String.prototype.replace()与启用了全局搜索的正则表达式一起使用:string.replace(/SEARCH/g, replaceWith) 。
不幸的是,由于必须转义正则表达式的特殊字符,因此在运行时无法轻松地从字符串生成正则表达式 。处理正则表达式以简单地替换字符串的方法非常麻烦 。
最后,
String.prototype.replaceAll()方法可以轻松地直接替换所有出现的字符串:string.replaceAll(search, replaceWith) 。这是第3阶段的提案,但希望很快就会纳入新的JavaScript标准 。
我的建议是使用replaceAll()来替换字符串 。但你需要一个polyfill来使用这个方法 。
你还知道其他替换所有字符串出现的方法吗?欢迎留言讨论 。
作者: Dmitri Pavlutin 译者:前端小智 来源:dmitripavlutin
原文:
https://dmitripavlutin.com/replace-all-string-occurrences-javascript/

【在 JavaScript 中替换所有指定字符 3 种方法】


推荐阅读