传递变量来替换函数

时间:2014-05-13 20:27:10

标签: javascript replace

如何传递变量以替换函数?

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)]]);
    }   
}

谢谢大家!

1 个答案:

答案 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变量并避免子字符串不便。