用变量替换关键字

Luk*_*ach 1 javascript regex

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

"give %player% %id% %amount%"
Run Code Online (Sandbox Code Playgroud)

一个对象:

{player: "Abc", id: 3, amount: 4, ...}
Run Code Online (Sandbox Code Playgroud)

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

Fel*_*ing 5

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

例:

var data = {
   foo: 42;
};

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