假设我有一个名为 目标 和一个名为 资料 其定义为 。
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()]
})
你能帮帮我吗?
你可以更新 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));
我认为这将永远有效。
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);