用对象属性替换模板字符串中的键

时间:2014-08-11 09:14:37

标签: javascript regex

我有一个像这样的对象。

var obj = {Id:1,Rate:5,Price:200,Name:"History"}

这样的模板。

var templateString = '<option id="{Id}">{Name}</option>'

我想用对象值替换模板值。我怎样才能做到这一点。我不是javascript正则表达式的专家。

所需的输出

var optionString = '<option id="1">History</option>'

Fiddle Sample

3 个答案:

答案 0 :(得分:13)

您可以将replace与回调一起使用:

var optionString = templateString.replace(/{(\w+)}/g, function(_,k){
      return obj[k];
});

Demonstration

答案 1 :(得分:0)

如果它只出现一次,这对你有用

var optionString = templateString.replace('{Id}',obj.Id).replace('{Name}',obj.Name)

答案 2 :(得分:0)

不使用正则表达式,可以通过使用Object.keys查找对象的所有属性,然后用其值替换每个属性来实现。

尝试这样:

Object.keys(obj).forEach(key => {
  templateString = templateString.replace(`**${key}**`, `"${obj[key]}"`);
});