用变量替换关键字

时间:2013-12-27 22:30:06

标签: javascript regex

我有一个看起来像这样的字符串:

"give %player% %id% %amount%"

一个对象:

{player: "Abc", id: 3, amount: 4, ...}

如何使用对象中具有相同名称的变量值替换字符串中的所有变量(“%player%”,“%id%”,...)?变量名称可能会在各种情况下发生变化,因此应自动更改。另外,有没有办法定义过滤器,比如忽略具有特定名称的所有变量?

1 个答案:

答案 0 :(得分:5)

str.replace接受回调函数作为替换。与regular expression和组一起,您可以搜索所有出现的存根串%...%,获取%之间的值,并在对象中查找相应的属性名称。

示例:

var data = {
   foo: 42;
};

"The answer is: %foo%".replace(/%([^%]+)%/g, function(match, prop) {
    return prop in data ? data[prop] : match;
});