【发布时间】:2015-02-26 10:02:32
【问题描述】:
是否有可能在不损失性能的情况下用另一个字符串替换所有出现的子字符串,并完全避免在此过程中使用 RegExp? IE。从等式中删除 RegExp,以确保当您忘记正确转义 + 之类的内容时不会发生 RegExp 魔术。
'1+1 2+2'.replace('+', '-') -> only first "+" is replaced
'1+1 2+2'.replace(/\+/g, '-') -> undesired regexp complexities
更新 1
这并不能解决逃逸问题:
String.prototype.replaceAll= function(search, replace) {
return this.replace(new RegExp(search, "g"), replace);
}
更新 2
执行程序化 unescape 会影响性能:
RegExp.quote = function(str) {
return (str+'').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
};
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: javascript string replace