我正在尝试使用“ {{msgStr””查找字符串中的所有实例。作为前缀并将其替换为变量。例如:

var msgStr = {
    h1Text: 'test',
    pText: 'test2'
}

var string = '<h1>{{msgStr.h1Text}}</h1><p>{{msgStr.pText}}</p>';
var pattern = new RegExp("{{msgStr.(.+?)}}","g");
alert(string.replace(pattern, msgStr[$1]));


问题是msgStr [$ 1]返回未定义。我尝试了msgStr [“ $ 1”],结果相同。如果我只执行“ $ 1”,它将输出h1Text和pText,这就是我试图使用的形式,例如msgStr [“ h1Text”]。

不知道我需要做些什么才能使其正常工作。任何帮助,将不胜感激。

最佳答案

callback as a second argument用于String.prototype.replace

str.replace(/{{msgStr\.(.+?)}}/g, function(_, c) {
    return msgStr[c];
});

关于javascript - 如何用具有可变值的特定前缀替换所有字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22719859/

10-09 16:46