Вы можете обновить regex
, чтобы соответствовать слову с числом.
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));