javascript - 如何在 Node JS 中搜索和替换字符串
问题描述
我正在尝试编写一些代码,允许我将文档作为字符串传递,该字符串可以是纯 txt 或 html,并且嵌入了一些我想用个人值替换的字段。像这样的东西
Hi {{ first_name | fallback: "there" }},
我将字段名称作为具有相同名称的对象传递,因此查找很容易。所以我正在寻找编码思路如何搜索 {{ }} 部分,然后检查字段是否未知、null 或“”,以及它是否在标签中应用后备值。这有点像 mailmerge,但我不希望它是一个 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));
推荐阅读
- python - 小批量梯度下降,亚当和时代
- javascript - JS将2个单独的数组与键结合起来
- c - 如何将我的旧 amiga 68000 游戏转换为便携式 c
- c# - 修改 XML 文本模板 textfield font_size?
- machine-learning - 处理生产中训练算法的多个 h2o api 调用的最佳方法是什么?
- android - 如何在android中更改通知栏的字符串区域设置
- mysql - 将“x.frm”重命名为“y.frm”时出错 - Errcode:13 - 权限被拒绝 - MySQL
- ionic-framework - 如何修复离子3中的一个信号
- spring - 我可以使用 JPA 将列配置为可删除吗
- html - 如何同时显示下标和上标?