JavaScript-Analogon zu printf und String.Format: Wie Sie Strings wie ein Profi formatieren
Haben Sie jemals solchen JavaScript-Code geschrieben?
let name = 'Alexei';let age = 28;console.log('Hallo, ich heiße ' + name + ' und bin ' + age + ' Jahre alt.');Wenn ja – dann wissen Sie genau, wie nervig das ist. Ständig Anführungszeichen öffnen und schließen, Pluszeichen setzen, sich bei Leerzeichen vertun. Und wenn Sie 5-6 Variablen einfügen müssen? Ein Albtraum!
In anderen Sprachen wurde dieses Problem schon lange gelöst. In Python gibt es f"Hallo, {name}" und "%s %d" % (name, age). In C – das legendäre printf. In C# und Java – String.Format. Und was ist mit JavaScript?
Spoiler: Es gibt eine Lösung, und zwar nicht nur eine. In diesem Artikel werden wir alle Methoden zur String-Formatierung in JavaScript durchgehen – von klassischen bis zu modernen. Sie erfahren, welches Analogon zu printf in JavaScript Sie für Ihre Aufgabe wählen sollten, und werden die Verkettung für immer vergessen.
Warum ist die Frage "JavaScript equivalent to printf/String.Format" so beliebt?
Auf Stack Overflow hat diese Frage Hunderttausende von Aufrufen gesammelt. Und das ist kein Zufall. Jeder Entwickler, der von einer anderen Sprache zu JavaScript wechselt, sucht zuerst nach dem gewohnten Werkzeug zur String-Formatierung.
Das Problem ist, dass es in reinem JavaScript kein eingebautes Analogon zu printf oder String.Format gibt. Es gibt nur die Verkettung (Aneinanderreihung von Strings mit +). Aber Entwickler haben mehrere elegante Lösungen gefunden, die wir uns ansehen werden.
Methode 1: Template-Literale – der moderne Standard
Seit ES6 (2015) gibt es in JavaScript Template-Literale. Sie sind das beste Analogon zu printf und String.Format für den täglichen Gebrauch. Sie funktionieren in allen modernen Browsern und Node.js.
Syntax: Wir verwenden Backticks ` anstelle von normalen Anführungszeichen und fügen Variablen mit ${} ein.
let name = 'Maria';let age = 25;let city = 'Moskau';
// Statt Verkettunglet message = `Hallo, ich heiße ${name}, bin ${age} Jahre alt und komme aus ${city}.`;console.log(message);// Ausgabe: Hallo, ich heiße Maria, bin 25 Jahre alt und komme aus Moskau.Aber das ist noch nicht alles! Innerhalb von ${} können Sie beliebige JavaScript-Ausdrücke ausführen:
let a = 10;let b = 5;
console.log(`Summe: ${a + b}`); // Summe: 15console.log(`Größer? ${a > b ? 'ja' : 'nein'}`); // Größer? jaconsole.log(`Zufall: ${Math.random()}`); // Zufall: 0.4837...Warum ist dies das beste Analogon zu printf in JavaScript?
- Lesbarkeit – der Code sieht aus wie normaler Text mit Einfügungen
- Sicherheit – Escape-Sequenzen werden automatisch verarbeitet
- Mehrzeiligkeit – Sie können Text über mehrere Zeilen schreiben
- Ausdrücke – Sie können Ergebnisse von Berechnungen einfügen
Mehrzeilige Template-Literale
let html = `<div class="card"> <h2>${title}</h2> <p>${description}</p></div>`;
console.log(html);// Ausgabe – sauberes HTML mit erhaltenen ZeilenumbrüchenVergleichen Sie das mit der Verkettung – der Unterschied ist enorm!
Methode 2: Die Bibliothek sprintf-js – klassisches printf in JavaScript
Wenn Sie das printf aus C oder die %-Formatierung aus Python vermissen, haben Sie eine hervorragende Option – die Bibliothek sprintf-js.
Installation über npm:
npm install sprintf-jsVerwendung:
const sprintf = require('sprintf-js').sprintf;const vsprintf = require('sprintf-js').vsprintf;
// Einfache Formatierunglet result = sprintf('Hallo, %s! Du bist %d Jahre alt.', 'Ivan', 30);console.log(result); // Hallo, Ivan! Du bist