元の質問の要件は、任意の置換キーの実行時処理であるように見えるため、文字列補間の恩恵を受けられないことは明らかです。
ただし、文字列補間を行う必要がある場合は、次を使用できます。
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