Formatage de chaînes en JavaScript : équivalent de printf ou String.Format
Réponse courte
En JavaScript, il n'y a pas de fonction intégrée comme sprintf ou String.Format dans le langage lui-même. La façon standard de formater des chaînes est d'utiliser les template literals (littéraux de gabarit) avec les backticks (`` ` ``) :
let result = `Bonjour, ${name} ! Vous avez ${count} nouveaux messages.`;
Alternatives disponibles
Si vous avez vraiment besoin d'une fonction de type sprintf, vous pouvez utiliser :
- Bibliothèque tierce :
sprintf-js(très légère) - Node.js :
util.format()(intégré dans Node.js, mais pas dans le navigateur) - Implémentation personnalisée simple avec
String.prototype.replace()
Exemples de code
Avec sprintf-js :
// npm install sprintf-js
const sprintf = require('sprintf-js').sprintf;
let result = sprintf("Bonjour, %s ! Vous avez %d nouveaux messages.", name, count);
Avec util.format (Node.js) :
const util = require('util');
let result = util.format("Bonjour, %s ! Vous avez %d nouveaux messages.", name, count);
Implémentation maison simple :
function formatString(template, ...args) {
return template.replace(/{(\d+)}/g, (match, index) => {
return typeof args[index] !== 'undefined' ? args[index] : match;
});
}
let result = formatString("Bonjour, {0} ! Vous avez {1} nouveaux messages.", name, count);
Conclusion
Pour un nouveau projet, je recommande d'utiliser les template literals : ils sont natifs, lisibles et fonctionnent partout. Les fonctions de type sprintf sont surtout utiles si vous portez du code depuis d'autres langages ou si vous avez besoin de formatage avancé (précision des nombres, padding, etc.).
No answers yet.
Connectez-vous pour laisser une réponse