我有一个看起来像这样的字符串:
"give %player% %id% %amount%"
一个对象:
{player: "Abc", id: 3, amount: 4, ...}
如何使用对象中具有相同名称的变量值替换字符串中的所有变量(“%player%”,“%id%”,...)?变量名称可能会在各种情况下发生变化,因此应自动更改。另外,有没有办法定义过滤器,比如忽略具有特定名称的所有变量?
答案 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;
});