3 回答
TA贡献1858条经验 获得超8个赞
一个选项是匹配单词字符,并使用replacer函数检查对象上是否存在键 - 如果是,则返回相关值:
const input = '{hours}/DP1/{facilityId}/CP23/{minutes}';
const obj = {
hours: 4,
facilityId: "abd-rtyo-99e",
minutes: 43
};
const output = input.replace(
/{(\w+)}/g,
(match, possibleKey) => obj[possibleKey] ? obj[possibleKey] : match
);
console.log(output);
// 4/DP1/abd-rtyo-99e/CP23/43
TA贡献1808条经验 获得超4个赞
另一种选择可能是使用Object.entries并使用替换中的键和值:
let obj = {
hours: 4,
facilityId: "abd-rtyo-99e",
minutes: 43
};
let str = '{hours}/DP1/{facilityId}/CP23/{minutes}';
Object.entries(obj).forEach(([key, value]) => {
str = str.replace(`{${key}}`, value);
});
console.log(str);
TA贡献1848条经验 获得超10个赞
您可以循环使用对象的所有键,for..in然后replace()使用key的值在原始字符串中循环键
let str = '{hours}/DP1/{facilityId}/CP23/{minutes}'
const obj = {
hours: 4,
facilityId: "abd-rtyo-99e",
minutes: 43
}
let result = str;
for(let k in obj){
result = result.replace(`{${k}}`,obj[k]);
}
console.log(result)
添加回答
举报