ari*_*ayu 3 javascript arrays string
我在关联数组中有几个字符串:
var arr = {
'============================================': '---------',
'++++++++++++++++++++++++++++++++++++++++++++': '---------',
'--------------------------------------------': '---------'
};
Run Code Online (Sandbox Code Playgroud)
我想用相应的值替换每个键的出现次数.我想出的是:
for (var i in arr)
{
strX = str.replace(i, arr[i]);
console.log('arr[\''+i+'\'] is ' + arr[i] + ': ' + strX);
}
Run Code Online (Sandbox Code Playgroud)
这有效,但仅限于首次出现.如果我将正则表达式更改为/i/g,则代码不起作用.
for (var i in arr)
{
strX = str.replace(/i/g, arr[i]);
console.log('arr[\''+i+'\'] is ' + arr[i] + ': ' + strX);
}
Run Code Online (Sandbox Code Playgroud)
你们知道如何解决这个问题吗?
代替
strX = str.replace(/i/g, arr[i]);
Run Code Online (Sandbox Code Playgroud)
你想做点什么.
strX = str.replace(new RegExp(i, "g"), arr[i]);
Run Code Online (Sandbox Code Playgroud)
这是因为/i/g指的是字母i,而不是变量的值i. 但是你的一个基本字符串有加号,这是正则表达式中的元字符.这些必须逃脱.最快的黑客如下:
new RegExp(i.replace(/\+/g, "\\+"), "g"), arr[i]);
Run Code Online (Sandbox Code Playgroud)
这是一个工作示例:http://jsfiddle.net/mFj2f/
但是,一般来说,我认为应该检查所有的元字符.