Considérez ce code:
var age = 3;
console.log("I'm " + age + " years old!");
Existe-t-il d'autres moyens d'insérer la valeur d'une variable dans une chaîne de caractères, à part la concaténation de chaînes de caractères ?
Le [Remedial JavaScript][1] de Douglas Crockford comprend une fonction String.prototype.supplant
. Elle est courte, familière et facile à utiliser:
String.prototype.supplant = function (o) {
return this.replace(/{([^{}]*)}/g,
function (a, b) {
var r = o[b];
return typeof r === 'string' || typeof r === 'number' ? r : a;
}
);
};
// Usage:
alert("I'm {age} years old!".supplant({ age: 29 }));
alert("The {a} says {n}, {n}, {n}!".supplant({ a: 'cow', n: 'moo' }));
Si vous ne voulez pas modifier le prototype de String, vous pouvez toujours l'adapter pour qu'il soit autonome, ou le placer dans un autre espace de noms, ou autre.
Essayez [sprintf][1]. Par exemple:
vsprintf('The first 4 letters of the english alphabet are: %s, %s, %s and %s', ['a', 'b', 'c', 'd']);
Vous pouvez utiliser [le système de modèles de Prototype][1] si vous avez vraiment envie d'utiliser un marteau pour casser une noix:
var template = new Template("I'm #{age} years old!");
alert(template.evaluate({age: 21}));