Die Anforderungen der ursprünglichen Frage konnten eindeutig nicht von der Zeichenfolgeninterpolation profitieren, da es sich anscheinend um eine Laufzeitverarbeitung beliebiger Ersatzschlüssel handelt.
Allerdings , wenn Sie nur String - Interpolation zu tun haben, können Sie:
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
Beachten Sie die Backticks, die die Zeichenfolge begrenzen. Sie sind erforderlich.
Für eine Antwort, die den Anforderungen des jeweiligen OP entspricht, können Sie diese String.prototype.replace()
als Ersatz verwenden.
Der folgende Code behandelt alle Übereinstimmungen und berührt keine ohne Ersatz (solange Ihre Ersatzwerte alle Zeichenfolgen sind, falls nicht, siehe unten).
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 .
Wenn einige Ihrer Ersetzungen keine Zeichenfolgen sind, stellen Sie sicher, dass sie zuerst im Objekt vorhanden sind. Wenn Sie ein Format wie das Beispiel haben, dh in Prozentzeichen eingeschlossen, können Sie den in
Operator verwenden, um dies zu erreichen.
jsFiddle .
Wenn Ihr Format jedoch kein spezielles Format hat, dh keine Zeichenfolge, und Ihr Ersatzobjekt keinen null
Prototyp hat, verwenden Sie es Object.prototype.hasOwnProperty()
, es sei denn, Sie können garantieren, dass keine Ihrer potenziell ersetzten Teilzeichenfolgen mit den Eigenschaftsnamen des Prototyps kollidiert.
jsFiddle .
Andernfalls würden Sie, wenn Ihre Ersatzzeichenfolge 'hasOwnProperty'
wäre, eine resultierende durcheinandergebrachte Zeichenfolge erhalten.
jsFiddle .
Als Randnotiz sollten Sie replacements
ein Object
, nicht ein genannt werden Array
.