Javascript 若字符串包含对象键,则替换为相应的值jquery
我有一个包含一些关键字的字符串,我希望能够用对象中的值替换它们 我的字符串:Javascript 若字符串包含对象键,则替换为相应的值jquery,javascript,jquery,object,replace,key-value,Javascript,Jquery,Object,Replace,Key Value,我有一个包含一些关键字的字符串,我希望能够用对象中的值替换它们 我的字符串: "I want to start the trip on {start_date} and return on {end_date}" 我希望能够用对象中的值替换{start\u date}和{end\u date}: let obj = {start_date: "2020-01-01", end_date: "2020-07-15"} 我希望我的声明是
"I want to start the trip on {start_date} and return on {end_date}"
我希望能够用对象中的值替换{start\u date}
和{end\u date}
:
let obj = {start_date: "2020-01-01", end_date: "2020-07-15"}
我希望我的声明是:
"I want to start the trip on 2020-01-01 and return on 2020-07-15"
我还需要这是动态的,对象可以改变,字符串可以不同。我不知道该怎么做。您可以连接管道上的所有键(
)来创建正则表达式,并使用对字符串的回调来替换
let str=“我想在{start_date}开始旅行,并在{end_date}返回”
设obj={开始日期:“2020-01-01”,结束日期:“2020-07-15”};
函数escapeRegExp(字符串){
返回字符串.replace(/[.*+\-?^${}()\[\]\\]/g,\\$&');
}
让res=str.replace(新的RegExp(
Object.keys(obj.map)(str=>“{”+escapeRegExp(str)+“}”).join(“|”),“g”/*global*/),
match=>obj[match.slice(1,-1)]/*删除前导'{'和尾随'}'*/);
控制台日志(res)
您可以连接管道上的所有键(|
)以创建正则表达式,并利用对字符串的回调来替换
let str=“我想在{start_date}开始旅行,并在{end_date}返回”
设obj={开始日期:“2020-01-01”,结束日期:“2020-07-15”};
函数escapeRegExp(字符串){
返回字符串.replace(/[.*+\-?^${}()\[\]\\]/g,\\$&');
}
让res=str.replace(新的RegExp(
Object.keys(obj.map)(str=>“{”+escapeRegExp(str)+“}”).join(“|”),“g”/*global*/),
match=>obj[match.slice(1,-1)]/*删除前导'{'和尾随'}'*/);
控制台日志(res)代码>
const string='我想在{start_date}开始旅行,并在{end_date}返回';
const obj={开始日期:'2020-01-01',结束日期:'2020-07-15'};
const result=string.replace(/{\w+}/g,key=>obj[key.slice(1,-1)]);
控制台日志(结果)代码>
const string='我想在{start_date}开始旅行,并在{end_date}返回';
const obj={开始日期:'2020-01-01',结束日期:'2020-07-15'};
const result=string.replace(/{\w+}/g,key=>obj[key.slice(1,-1)]);
控制台日志(结果)代码>
let sentence =
"I want to start the trip on {start_date} and return on {end_date}";
let obj = { start_date: "2020-01-01", end_date: "2020-07-15" };
Object.keys(obj).forEach((key) => {
if (sentence.includes(key)) {
var regex = new RegExp(`{${key}}`, "g");
sentence = sentence.replace(regex, obj[key]);
}
});