如何传递变量以替换函数?
function fname(object, object2){
object.text.replace(/{{[^}}]+}/g,function(m,key){
return object.replaceText[object2[m.substring(2, m.length-2)]];
});
}
对象类似:
object = {
text : 'some text where I want replace {{some}} string',
replaceText : {
'1' : 'newText'
}
}
object2 = {
some : 1
}
感谢您的帮助。
修改 我找到了另一种方法,这里的变量范围没有问题:
function fname(object1, object2){
var reg = new RegExp(/{{[^}}]+}}/g);
var result;
while((result = reg.exec(object1.text)) !== null) {
object1.text = object1.text.replace(result[0],object1.replaceText[object2[result[0].substring(2, result[0].length-2)]]);
}
}
谢谢大家!
答案 0 :(得分:1)
String.prototype.replace
返回新字符串,因此请更改您的函数:
function fname(object1, object2) {
object1.text = object1.text.replace(/{{([^}}]+)}}/g,function(m,key){
return object1.replaceText[object2[key]];
});
}
同时将正则表达式更改为/{{([^}}]+)}}/g
(注意括号)。 ([^}}]+)
是一个匹配组,因此您可以填充key
变量并避免子字符串不便。