Javascript (多个)用数组替换字符串
我有一根大绳子,需要换几次。比如Javascript (多个)用数组替换字符串,javascript,jquery,replace,Javascript,Jquery,Replace,我有一根大绳子,需要换几次。比如 var str="Username:[UN] Location:[LC] Age:[AG] ... " str=str.replace("[UN]","Ali") str=str.replace("[LC]","Turkey") str=str.replace("[AG]","29") ... //lots of replace ... 有没有办法将这些查找和替换参数放入一个数组中,并同时替换所有参数?例如: reps = [["UN","Ali"], ["
var str="Username:[UN] Location:[LC] Age:[AG] ... "
str=str.replace("[UN]","Ali")
str=str.replace("[LC]","Turkey")
str=str.replace("[AG]","29")
...
//lots of replace
...
有没有办法将这些查找和替换参数放入一个数组中,并同时替换所有参数?例如:
reps = [["UN","Ali"], ["LC","Turkey"], ["AG","29"], ...]
$(str).replace(reps)
不需要jQuery
var reps = {
UN: "Ali",
LC: "Turkey",
AG: "29",
...
};
return str.replace(/\[(\w+)\]/g, function(s, key) {
return reps[key] || s;
});
- 正则表达式
查找表单/\[(\w+\]/g
的所有子字符串[XYZ]
- 只要找到这样的模式,就会调用
的第二个参数中的函数来获取替换.replace
- 它将搜索关联数组并尝试返回替换项(如果键存在)(
)李>reps[key]
- 否则,将返回原始子字符串(
),即不替换任何内容。(请参阅以了解s
如何实现此功能。)|
var array = {"UN":"ALI", "LC":"Turkey", "AG":"29"};
for (var val in array) {
str = str.split(val).join(array[val]);
}
+1,尽管:这假定替换永远不会是空字符串@用户:如果有时替换为空字符串,则将函数体更改为
var rep=reps[key];return typeof rep==“未定义”?s:代表
刚刚在Chrome的控制台上试用过,但不起作用<代码>var代表={UN:“Ali”,LC:“Turkey”,AG:“29”},然后是var str=“你好,我在LC,AG”
,最后是str.replace(/\[(\w+)\]/g,函数(s,键){return reps[key]| s;})
返回初始字符串,没有任何替换。@maxagaz请检查OP的问题,str
是var str=“用户名:[UN]位置:[LC]年龄:[AG]”
。UN、LC和AG周围有括号。@KrzysztofSafjanowski应该是另一个括号,因为这一个比您的重复提案更旧