javascript - 基于用户选择的角度更改/替换字符串中的值
问题描述
我正在开发一个录取通知书模板,该模板将根据从候选人列表中选择的候选人替换/修改动态数据点,如姓名、地址、角色、薪水等。动态数据点有一个固定的语法,即它们将包含在 内<<>>
,例如:
Welcome to the family, <<Name>>
You will be paid <<Salary>> for the duration of your employment.
换句话说,这几个数据点将通过选择我们想要提供工作的候选人而改变,而模板的其余部分将保持不变。这里有一个demo来帮助你理解。
这是我用 1 个模板创建的虚拟数组,在现实世界的应用程序中,我可以有许多具有不同条款名称的模板,所以我正在寻找一个永久修复。 .ts 文件,模板列表:
[{
templateId: 1,
templateName: "Offer",
clauses: [
{
clauseName: "Introduction",
clauseId: 1,
texts: [
{
text: "Hello <<Name>>, Welcome to the Machine",
textId: 1,
}]
},
{
clauseName: "Address",
clauseId: 2,
texts: [
{
text: "<<Address>>",
textId: 2,
}]
},
{
clauseName: "Date Of Joining",
clauseId: 3,
texts: [
{
text: "You can join us on <<DateOfJoining>>",
textId: 3,
}]
},
]
}]
这是候选人名单,
candidateList = [
{ name: "Simba", address: "Some Random Cave" },
{ name: "Doe John", address: "line 4, binary avenue, Mobo" },
{ name: "B Rabbit", address: "8 mile road, Detroit" },
{ name: "Peter Griffin", address: "Spooner Street" },
{ name: "Speedy Gonzales", address: "401, hole 34, Slyvester Cat Road" },
{ name: "Morty", address: "Time Machine XYZ" },
{ name: "Brock", address: "pokeball 420, Medic center" },
]
解决方案
您可以使用正则表达式来替换这些占位符,例如:
var result = text.text.replace(/\<\<(.*?)\>\>/g, function(match, token) {
return candidate[token.toLowerCase()];
});
将其合并到您的显示中的一种方法是创建一个返回格式化文本的属性。
推荐阅读
- youtube-api - youtube player api:如何挂钩全屏模式
- html - 文本在悬停时显示为非居中
- matlab - 以直流电机模型为强制函数的状态空间模型
- python - 尝试在 Visual Studio Code (Flatpak) 中运行 PyAudio 时出现错误消息
- databricks - 我可以在 databricks-connect 中有多个连接吗?
- oracle - 插入带有空白值的语句而不定义所有列
- apache-spark - 为我的数据框创建一个将另一列中的值相乘的新列时,如何避免此 TypeError
- charts - Pine Script:如何在图表上手动绘制所有线条
- reactjs - 为什么 react 会以这种方式更新状态
- github - 如何从我的 jekyll github 页面链接中删除这个 %20?