Les exigences de la question d'origine ne pouvaient clairement pas bénéficier de l'interpolation de chaîne, car il semble qu'il s'agisse d'un traitement d'exécution de clés de remplacement arbitraires.
Cependant , si vous deviez juste faire une interpolation de chaîne, vous pouvez utiliser:
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
Notez les backticks délimitant la chaîne, ils sont obligatoires.
Pour une réponse adaptée à l'exigence du PO particulier, vous pouvez utiliser String.prototype.replace()
pour les remplacements.
Le code suivant gérera toutes les correspondances et ne touchera pas celles sans remplacement (à condition que vos valeurs de remplacement soient toutes des chaînes, sinon, voir ci-dessous).
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 .
Si certains de vos remplacements ne sont pas des chaînes, assurez-vous qu'ils existent d'abord dans l'objet. Si vous avez un format comme l'exemple, c'est-à-dire entouré de signes de pourcentage, vous pouvez utiliser l' in
opérateur pour y parvenir.
jsFiddle .
Cependant, si votre format n'a pas de format spécial, c'est-à-dire aucune chaîne, et que votre objet de remplacement n'a pas de null
prototype, utilisez Object.prototype.hasOwnProperty()
, à moins que vous ne puissiez garantir qu'aucune de vos sous-chaînes remplacées potentielles n'entrera en conflit avec les noms de propriétés sur le prototype.
jsFiddle .
Sinon, si votre chaîne de remplacement l'était 'hasOwnProperty'
, vous obtiendrez une chaîne résultante en désordre.
jsFiddle .
En passant, vous devriez être appelé replacements
un Object
, pas un Array
.