javascript - 用对象中的值替换匹配的字符

标签 javascript regex

我有一个字符串如下:

{hours}/DP1/{facilityId}/CP23/{minutes}

并且有一个对象:

{
  hours: 4,
  facilityId: "abd-rtyo-99e",
  minutes: 43
}

我想得到输出字符串:

4/DP1/abd-rtyo-99e/CP23/43

从而将 {} 内的任何标记替换为对象中的值。因此,{} 内的 hours 被替换为对象中的 4minutes 被替换为 43 >等等。我怎样才能做到这一点?

我可以使用 {\w+} 等正则表达式检测 {} 内的字符,但不知道如何继续。

最佳答案

一种选择是匹配单词字符,并使用替换函数来检查对象上是否存在该键 - 如果存在,则返回关联的值:

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

关于javascript - 用对象中的值替换匹配的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56163455/

相关文章:

javascript - Rally 示例应用程序错误

javascript - 正则表达式删除列 "|"字符

正则表达式性能优化提示和技巧

JavaScript 替换()正则表达式 : nesting modifier

javascript - 使用 Selenium C# 将 Chrome 缩放设置为 100%

javascript - 我在哪里可以在 KRL 规则集中使用 $K jquery?

ruby 正则表达式 : Matching if substring doesn't exist

regex - 如何使用正则表达式替换子字符串值?

循环索引变量的Javascript成为全局范围的一部分?

javascript - 如何从任何组件外部调用 React 的 setState 函数(如实用程序函数)?