Javascript 替换字符串中的字符数组

Javascript 替换字符串中的字符数组,javascript,character-encoding,Javascript,Character Encoding,我正在寻找一个函数,它可以用任何开始字符和结束字符替换所有字符 我知道我可以使用正则表达式表示法: string=string.replace(/a/g,"b"); 但是,因为搜索的字符在正则表达式中,所以我有时需要转义该字符,有时则不需要,如果我想对完整的字符列表执行此操作,这很烦人 convertEncoding= function(string) { var charMap= {'"':""",'&':"&",...} for (s

我正在寻找一个函数,它可以用任何开始字符和结束字符替换所有字符

我知道我可以使用正则表达式表示法:

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()
(例如天真的方法)?

您可以在字符串中使用转义RegExp特殊字符,如以下所述:

然后可以使用regexp全局替换

function escapeRegExp(str) {
   return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}

for (startChar in charMap) {
   endChar=charMap[startChar];
   result = string.replace(RegExp(escapeRegExp(startChar), 'g'), endChar);
}

好的,实际上我觉得这会有点慢,我宁愿自己写正则表达式。@edi9999 1)我怀疑这会很慢-除非你转换数百万个编码,否则至少人类不会注意到任何东西2)你只能在启动时转义字符串一次,而不是每次转换编码,所以启动时只会稍微慢一点3)自己做会花费更多的时间来开发(写、测试、调试、维护、读取)好的,我已经测试过了,这是真的