我正在寻找一个用任何开始和结束字符替换所有的函数。
我知道我可以使用正则表达式:
string=string.replace(/a/g,"b");
但是,因为搜索到的字符在正则表达式中,我有时需要逃避该字符,有时不需要,如果我想为完整的字符列表执行此操作,这很烦人
convertEncoding= function(string) {
var charMap= {'"':""",'&':"&",...}
for (startChar in charMap) {
endChar=charMap[startChar];
string= string.replaceAll(startChar,endChar);
}
}
它们是编写该函数replaceAll的好方法,而不使用for循环并使用String.replace()
(例如天真的方式)?
答案 0 :(得分:2)
你可以使用转义字符串中的RegExp特殊字符,如此处所述https://stackoverflow.com/a/6969486/519995:
然后你可以使用regexp全局替换
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
for (startChar in charMap) {
endChar=charMap[startChar];
result = string.replace(RegExp(escapeRegExp(startChar), 'g'), endChar);
}