javascript - 传递变量来替换函数

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

谢谢大家!

最佳答案

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/

相关文章:

javascript - 使用 Javascript 随机图像生成器获取图像路径的 404 错误

replace - 将文件的每 4 行替换为另一个文件中的相应行

javascript - jQuery 搜索替换字符串

替换 R 数据框中变量中的特定字符

javascript - 在Jquery中获取所选图像的值

javascript - 如何在javascript中将毫秒解析为日期

regex - 如何在 sublime 文本的范围内进行 vi 搜索和替换

regex - 使用 iname 在 Linux Find 命令中匹配 RegExp

javascript - Blueimp Bootstrap-Image-Gallery 在页面加载时直接初始化为灯箱/以编程方式打开灯箱

javascript - 如何检测 Javascript 文件的新版本?