从最初的 SO 问题如何替换 JavaScript 中所有出现的字符串?
例如,如果我有这样的字符串:
var str = "Test abc test test abc test test test abc test test abc";
我这样做:
str = str.replace('abc', '');
它只删除第一次出现的abc
,如何删除所有子字符串abc
?
从最初的 SO 问题如何替换 JavaScript 中所有出现的字符串?
例如,如果我有这样的字符串:
var str = "Test abc test test abc test test test abc test test abc";
我这样做:
str = str.replace('abc', '');
它只删除第一次出现的abc
,如何删除所有子字符串abc
?
简短的回答
使用带 g 参数的正则表达式(RegExp),全局搜索
分段
观察
正则表达式并非微不足道,因为某些字符会影响正则表达式的解释方式。这些处理必须仅应用于安全字符串,否则在处理之前应将其转义。这是一个更完整的例子。
字体
响应如何替换 JavaScript 中所有出现的字符串?
也可以看看
String.replace()接受字符串或RegExp对象作为其第一个参数。
如果你想替换 all
"abc"
,你所要做的就是使用带有/g
( global ) 修饰符的正则表达式,它表示所有出现的地方都被替换了。如果要忽略大小写,请使用修饰符
/i
(忽略大小写):一般情况:
这同样适用于一般情况,替换任何子字符串,并转义所有特殊字符。
不建议扩展原始类型 (
built-in prototype
) 的原型,但为了展示不同的解决方案,我将举例说明如何通过修改String
.基于正则表达式的实现
基于Split和Join的实现(Functional)
它将像这样使用:
注意:不要在实际代码中使用此方法
正则表达式的替代方法可以是:
一般模式是:
在某些情况下,这曾经比使用
protoypes
正则表达式更快,但在现代浏览器中似乎并非如此。因此,这仅应用作避免正则表达式转义的快速修复,但不适用于将要投入生产的实际代码。