137 votes

Formater une chaîne JavaScript en utilisant des espaces réservés et un objet de substitutions ?

J'ai une chaîne avec disons : My Name is %NAME% and my age is %AGE%.

%XXX% sont des espaces réservés. Nous devons y substituer des valeurs à partir d'un objet.

L'objet ressemble à : {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"}

Je dois analyser l'objet et remplacer la chaîne par les valeurs correspondantes. La sortie finale sera donc :

Je m'appelle Mike et j'ai 26 ans.

Le tout doit être fait à l'aide de javascript pur ou de jquery.

32voto

Tomasz Mularczyk Points 12030

Que diriez-vous d'utiliser les littéraux de modèle ES6 ?

 var a = "cat";
var b = "fat";
console.log(`my ${a} is ${b}`); //notice back-ticked string

En savoir plus sur les littéraux de modèle...

16voto

zawhtut Points 3423

Vous pouvez utiliser JQuery(jquery.validate.js) pour le faire fonctionner facilement.

 $.validator.format("My name is {0}, I'm {1} years old",["Bob","23"]);

Ou si vous souhaitez utiliser uniquement cette fonctionnalité, vous pouvez définir cette fonction et l'utiliser comme

 function format(source, params) {
    $.each(params,function (i, n) {
        source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
    })
    return source;
}
alert(format("{0} is a {1}", ["Michael", "Guy"]));

crédit à l'équipe jquery.validate.js

10voto

hafichuk Points 2794

Utilisez simplement replace()

 var values = {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"};
var substitutedString = "My Name is %NAME% and my age is %AGE%.".replace("%NAME%", $values["%NAME%"]).replace("%AGE%", $values["%AGE%"]);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X