用json中的数据更改字符串中的大括号



我有一个模板字符串,我想改变单词与{{}}周围的数据类似的名称从json文件。我正在使用谷歌应用程序脚本。

交货。你好,我的名字叫{{名字}}{{姓}}。——比;大家好,我叫夏洛克·福尔摩斯。

Json文件将是:

[ { 'First Name': 'Sherlock',
'Last Name': 'Holmes'  }  ]

我试过使用这个代码,模板是字符串,数据是json:

function fillInTemplateFromObject(template, data) {
let template_string = template;
// Token replacement
template_string = template_string.replace(/{{[^{}]+}}/g, key => {
return escapeData_(data[key.replace(/[{}]+/g, "")] || "");
});
return  JSON.parse(template_string);
}
function escapeData_(str) {
return str
.replace(/[\]/g, '\\')
.replace(/["]/g, '\"')
.replace(/[/]/g, '\/')
.replace(/[b]/g, '\b')
.replace(/[f]/g, '\f')
.replace(/[n]/g, '\n')
.replace(/[r]/g, '\r')
.replace(/[t]/g, '\t');
};

但是它只是删除了大括号而不是替换它们。前女友。你好,我的名字是。

如有任何帮助,不胜感激。

由于您的data变量是数组中的字典,引用data[key.replace(/[{}]+/g, "")]返回undefined。这可以通过data变量而不是输入以下。

{ 'First Name': 'Sherlock',
'Last Name': 'Holmes' }

另外,不需要解析template_string

function fillInTemplateFromObject(template, data) {
let template_string = template;
// Token replacement
template_string = template_string.replace(/{{[^{}]+}}/g, key => {
return escapeData_(data[key.replace(/[{}]+/g, "")] || "");
});
return template_string;
}
function escapeData_(str) {
return str
.replace(/[\]/g, '\\')
.replace(/["]/g, '\"')
.replace(/[/]/g, '\/')
.replace(/[b]/g, '\b')
.replace(/[f]/g, '\f')
.replace(/[n]/g, '\n')
.replace(/[r]/g, '\r')
.replace(/[t]/g, '\t');
};