我试图使用JavaScript动态替换大括号中的内容。下面是我的代码示例:
var myString = "This is {name}'s {adjective} {type} in JavaScript! Yes, a {type}!";
var replaceArray = ['name', 'adjective', 'type'];
var replaceWith = ['John', 'simple', 'string'];
for(var i = 0; i <= replaceArray.length - 1; i ++) {
myString.replace(/\{replaceArray[i]\}/gi, replaceWith[i]);
}
alert(myString);上面的代码,应该,输出“这是JavaScript中John的简单字符串!是的,一个字符串!”
下面是发生的情况:
但是,我没有任何运气,特别是因为一个值可能在多个位置中被替换,而且我正在处理正则表达式中的一个动态值。
谁能帮我解决这个问题,使用类似的设置,如上面?
发布于 2011-03-17 03:00:51
首先,String.replace不是破坏性的-它不会改变字符串本身,所以您必须设置myString = myString.replace(...)。其次,您可以使用RegExp动态创建new RegExp对象,因此所有这些结果将是:
var myString = "This is {name}'s {adjective} {type} in JavaScript! Yes, a {type}!",
replaceArray = ['name', 'adjective', 'type'],
replaceWith = ['John', 'simple', 'string'];
for(var i = 0; i < replaceArray.length; i++) {
myString = myString.replace(new RegExp('{' + replaceArray[i] + '}', 'gi'), replaceWith[i]);
}https://stackoverflow.com/questions/5334380
复制相似问题