为了账号安全,请及时绑定邮箱和手机立即绑定

将匹配的字符替换为object中的值

将匹配的字符替换为object中的值

慕娘9325324 2019-04-17 15:15:41
我有一个字符串如下:{hours}/DP1/{facilityId}/CP23/{minutes}并有一个对象是:{   hours: 4,   facilityId: "abd-rtyo-99e",   minutes: 43}我想得到输出字符串:4/DP1/abd-rtyo-99e/CP23/43从而用{}对象中的值替换任何内部令牌。所以hours内部{}被替换为4从对象,minutes通过43等。我怎么能这样做?我可以{}使用正则表达式检测内部字符,{\w+}但不知道如何继续使用它。
查看完整描述

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


查看完整回答
反对 回复 2019-05-17
?
炎炎设计

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);


查看完整回答
反对 回复 2019-05-17
?
慕桂英546537

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)


查看完整回答
反对 回复 2019-05-17
  • 3 回答
  • 0 关注
  • 548 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信