原始问题的要求显然无法从字符串插值中受益,因为它似乎是任意替换键的运行时处理。
但是,如果您只需要执行字符串插值,则可以使用:
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
请注意分隔字符串的反引号,它们是必需的。
对于适合特定OP要求的答案,您可以使用替代。String.prototype.replace()
以下代码将处理所有匹配项,而不是在没有替换项的情况下触摸匹配项(只要替换值都是字符串,如果不是,请参阅下文)。
var replacements = {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"},
str = 'My Name is %NAME% and my age is %AGE%.';
str = str.replace(/%\w+%/g, function(all) {
return replacements[all] || all;
});
jsFiddle.
如果某些替换项不是字符串,请确保它们首先存在于对象中。如果您有类似示例的格式,即用百分符号包装,则可以使用运算符来实现此目的。in
jsFiddle.
但是,如果您的格式没有特殊格式,即任何字符串,并且您的替换对象没有原型,请使用 ,除非您可以保证没有潜在的替换子字符串会与原型上的属性名称发生冲突。null
Object.prototype.hasOwnProperty()
jsFiddle.
否则,如果你的替换字符串是 ,你会得到一个结果混乱的字符串。'hasOwnProperty'
jsFiddle.
作为旁注,您应该被称为 ,而不是 .replacements
Object
Array