如何在javascript中通过忽略下划线来替换特定字符后的所有匹配词?

问题描述 投票:0回答:1

假设我有一个名为 目标 和一个名为 资料 其定义为 。

var data : {
 value_1: "Hi"
}

var target = "Replace $value_1"

因此,要取代 值_1 中设定的数值。资料是的

target = target.replace(/\$(\w+)/gm, function(_, a) {
  console.log(a) // => value 
  // But I want value_1, I know "_" is not a word but how do I do it ?
  return data[a.trim()]
 })

你能帮帮我吗?

javascript string object replace
1个回答
2
投票

你可以更新 regex 与num匹配的单词。

var data = {
  value_1: "Hi",
  value_2: "how",
  value_3: "are",
  value_4: "you",
};

var target = "Replace $value_1 $value_2 $value_3 $value_4?";
const template = (str) => str.replace(/\$(\w+_\d+)/g, (_, m) => data[m]);
console.log(template(target));

您可以使用 string literal 以便更好地处理和清理代码。

样品。

function template(strings, ...keys) {
  return (dict) =>
    keys
      .reduce(
        (m, key, i) => {
          m = m.concat(dict[key], strings[i + 1]);
          return m;
        },
        [strings[0]]
      )
      .join("");
}
const dict = {
  value_1: "Hi",
  value_2: "how",
  value_3: "are",
  value_4: "you",
};

let html = template`Replace ${"value_1"} ${"value_2"} ${"value_3"} ${"value_4"}?`;
console.log(html(dict));

1
投票

我认为这将永远有效。

var data = {
 value_1: "Hi"
}

var target = "Replace $value_1";

target = target.replace(/\$((\w|\_)+)/gm, function(_, a) {
  console.log(a) // => value 
  // But I want value_1, I know "_" is not a word but how do I do it ?
  return data[a.trim()]
 });

console.log(target);
© www.soinside.com 2019 - 2024. All rights reserved.