我尝试写一些代码,让我传递一个文档作为一个字符串,是纯TXT或HTML,并有一些领域内嵌我想与个人价值来代替。像例如像这样
Hi {{ first_name | fallback: "there" }},
所以查找容易,我会通过字段名与同名的对象。所以我要寻找编码想法如何搜索{{}}部分,然后检查是否字段不是未知的,null或“”如果是在标签应用故障预置值。这有点像邮件合并,但我不想部份是一个的docx文件和输出Word或PDF格式。我只是想处理的字符串,所以我可以传回给我的邮件代码和发送消息
程序将执行以下操作来实现你的输出,
{{}}
之间封闭的字符串|
蜇trim()
不必要的空间fallback
值Replace
具有所需值的刺痛下面是示例程序将由步骤做工序中的上述操作。
var str = 'Hi {{ first_name | fallback: "there" }},'
var data = {
first_name: "siva",
last_name: "sankar",
code: 29
}
function templateRender(str, data) {
return str.replace(/{{([^}]+)}}/g, function (match, string) {
var fallback = ''
var stringArr = string.split("|");
var value = stringArr[0].trim();
if (stringArr[1]) { fallback = stringArr[1].match(/(?<=fallback\:\s?)(["'].*?["'])/)[0].replace(/["']/g, "").trim(); }
return data[value] ? data[value] : fallback;
});
}
console.log("New String :::: ", templateRender(str, data));
看看车把的js。这是把手究竟是干什么的,qazxsw POI
为了您的回退,您可以使用,如果。
https://handlebarsjs.com
这将默认为那里,如果FIRST_NAME是falsey。
如果你想,如果是一个有点冗长,你可以写一个默认辅助函数。
{{#if first_name}}{{first_name}}{{else}}there{{/if}},
并在模板中使用它
Handlebars.registerHelper('fallback', (val, def) => val || def);
Hi {{fallback first_name 'there'}},
const template = Handlebars.compile(`Hi {{#if first_name}}{{first_name}}{{ else }}there{{/if}},`);
console.log(template({ first_name: '' }));
console.log(template({ first_name: 'Billy' }));
Handlebars.registerHelper('fallback', (val, def) => val || def);
const templateWithFallback = Handlebars.compile(`Hi {{fallback first_name 'there'}},`);
console.log(templateWithFallback({ first_name: '' }));
console.log(templateWithFallback({ first_name: 'Billy' }));