Javascript 将所有出现的{{var}}替换为value
我有一个包含标识符的字符串Javascript 将所有出现的{{var}}替换为value,javascript,regex,Javascript,Regex,我有一个包含标识符的字符串 "Hello {{name}}, you are {{age}} years old." 示例对象: let valueMap = {name: 'jeff', age: 26} 将其转换为以下内容的最佳方式是什么: "Hello jeff, you are 26 years old." 我目前的代码是: let string = 'Hello {{name}}, {{name}} you are {{age}} years old. {{wtf}}'; le
"Hello {{name}}, you are {{age}} years old."
示例对象:
let valueMap = {name: 'jeff', age: 26}
将其转换为以下内容的最佳方式是什么:
"Hello jeff, you are 26 years old."
我目前的代码是:
let string = 'Hello {{name}}, {{name}} you are {{age}} years old. {{wtf}}';
let objMap = {
name: 'deojeff',
age: 26,
}
let parsedString
let matched = string.match(/[^\{{.+}]+(?=}})/g)
let replaced = string.replace(/[^\{{.+}]+(?=}})/g, (args) => {
return objMap[args] !== undefined ? objMap[args] : args
})
console.log(replaced)
// Hello {{deojeff}}, {{deojeff}} you are {{26}} years old. {{wtf}}
但是它包括{{
}
,做这件事的最好方法是什么
var string='Hello{{{name},{{{name}你已经{{age}岁了。{{wtf}}};
var objMap={
姓名:“杰夫”,
年龄:26,,
};
for(objMap中的var prop){
if(对象映射hasOwnProperty(属性)){
string=string.replace(新的RegExp('{{'+prop+'}}}',g),objMap[prop]);
}
}
console.log(字符串)代码>有许多模板解析器库可用。你可以用其中一个。
dot是其中一个可供参考的功能。只需将“替换”功能更改为:
let replaced = string.replace(/{{(.*?)}}/g, (args, arg0) => {
return objMap[arg0] !== undefined ? objMap[arg0] : args
})
var string='Hello{{{name},{{{name}你已经{{age}岁了。{{wtf}}};
var objMap={
姓名:“杰夫”,
年龄:26,,
}
var matched=string.match(/[^\{.+}]+(?=}})/g)
var replaced=string.replace(/(\{.*?\})/g,函数(m,$1){
//从开始到结束对{{}进行切分,这样我们就可以使用dget键
var key=$1.slice(2,-2);;
返回objMap[key]| |“”;
});
console.log(已替换)
//你好{{{deojeff}},{{{deojeff}}你已经{{26}岁了。{{wtf}
如果您使用的是es6,则始终可以使用反勾号(模板文本)
您可以阅读更多内容。这将是一项有效的工作。另外,将{{wtf}}
替换为
const string='Hello{{{name},{{{name}你已经{{age}岁了。{{wtf}}};
常量objMap={
姓名:“杰夫”,
年龄:26,,
}
//const matched=string.match(/(?:\{{2})([^\}])+(?:\}{2})/g);
const replaced=string.replace(/(?:\{{2})([^\}])+(?:\}{2})/g,(args)=>{
const parsedArgs=args.replace(/\{\}/g',);
返回objMap[parsedArgs]!==未定义?objMap[parsedArgs]:“”;
});代码>代码应该如何处理{{wtf}
?移除它?留着?应该留着。因为它在objMap
中没有任何匹配项,所以可能重复,哇!这很好用,也很干净。我不知道你能做到。谢谢,我正在使用ES6。但是字符串将是来自用户的输入,所以我们正试图使其尽可能简单。哦,好的。您的权利,这只有在用户没有编写字符串的情况下才有意义。对不起,您应该保持{{{wtf}}
原样。使用返回objMap[key]| | m代码>在替换中。
let obj = {
name: 'deojeff',
age: 26,
}
let string = `Hello ${name}, ${name} you are ${age} years old.`
console.log(string)