如何传递变量来替换函数?
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)]]);
}
}
谢谢大家!
最佳答案
String.prototype.replace
返回新字符串,因此请像这样更改您的函数:
function fname(object1, object2) {
object1.text = object1.text.replace(/{{([^}}]+)}}/g,function(m,key){
return object1.replaceText[object2[key]];
});
}
还将正则表达式更改为 /{{([^}}]+)}}/g
(注意括号)。 ([^}}]+)
是一个匹配组,因此您可以填充 key
变量并避免子字符串带来的不便。
关于javascript - 传递变量来替换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23640955/