Возможно ли, без потери производительности, заменить все вхождения подстроки на другую строку и полностью избежать использования RegExp на этом пути? То есть удалите RegExp из уравнения, просто чтобы убедиться, что волшебство RegExp не происходит, когда вы забываете правильно сбежать от чего-то вроде +
.Заменить все вхождения в строке и избежать escape-кода RegExp
'1+1 2+2'.replace('+', '-') -> only first "+" is replaced
'1+1 2+2'.replace(/\+/g, '-') -> undesired regexp complexities
UPDATE 1
Это не решает проблему побега:
String.prototype.replaceAll= function(search, replace) {
return this.replace(new RegExp(search, "g"), replace);
}
UPDATE 2
Выполнение программного экранирования в это падение производительности:
RegExp.quote = function(str) {
return (str+'').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
};
Комментарии для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/71788/discussion-on-question-by-exebook-replace-all-occurrences-in--string-and-avoid) , –