我的Javascript代码中包含以下字符串:

"Test abc test test abc test test test abc test test abc"
正在做:
str = str.replace('abc', '');
似乎只删除了上面字符串中第一次出现的abc
如何替换出现的所有

最佳答案

更新:在大多数流行浏览器的最新版本中,您可以使用 replaceAll
如下所示:

let result = "1 abc 2 abc 3".replaceAll("abc", "xyz");
// `result` is "1 xyz 2 xyz 3"
但是请先检查Can I use或其他兼容性表,以确保您要定位的浏览器首先添加了对此功能的支持。

对于Node以及与旧版/非当前浏览器的兼容性:
注意:请勿在对性能有要求的代码中使用以下解决方案。
作为简单文字字符串的正则表达式的替代方法,您可以使用
str = "Test abc test test abc test...".split("abc").join("");
一般模式是
str.split(search).join(replacement)
在某些情况下,这过去比使用replaceAll和正则表达式要快,但是在现代浏览器中,情况似乎不再如此。
基准:https://jsperf.com/replace-all-vs-split-join
结论:如果您有性能至关重要的用例(例如,处理数百个字符串),请使用Regexp方法。但是对于大多数典型的用例来说,不必担心特殊字符是非常值得的。

09-30 16:44
查看更多