HOWTO · JavaScript
JavaScript entspricht Printf oder String.Format
Dieses Tutorial beschreibt die eigentliche Ersetzung von printf() in JavaScript
Auf dieser Seite
JavaScript enthält keine integrierte Funktion printf oder String.Format. Mit Template-Literalen fügen Sie Werte oder Ausdrücke in normalen Text ein, mit Intl.NumberFormat formatieren Sie Zahlen passend zu einer Locale, und sprintf-js verwenden Sie, wenn Sie ausdrücklich Formatbezeichner im printf-Stil benötigen. console.log gibt Werte in einer Konsole aus; es erstellt keinen formatierten String. Die Beispiele mit Template-Literalen und Intl.NumberFormat wurden ausgeführt; das Inline-Beispiel mit sprintf-js war in den bereitgestellten Laufzeitfällen nicht enthalten.
Template-Literale verwenden
Template-Literale sind die einfachste Wahl, wenn Sie aus bekannten Werten eine Nachricht erstellen. Setzen Sie den Text in Backticks und schreiben Sie jede Variable oder jeden Ausdruck in ${...}. Das Beispiel erstellt aus einem Namen und einer Berechnung eine Begrüßung.
const name = "Alice";
const age = 30;
const greeting = `Hello, my name is ${name} and I am ${age} years old.`;
console.log(greeting);
Hello, my name is Alice and I am 30 years old.
Dieser Ansatz unterstützt auch mehrzeilige Strings und Ausdrücke wie ${price * quantity}. Der resultierende String bleibt im Quelltext sichtbar, und Sie benötigen keine zusätzliche Formatierungsbibliothek. Verwenden Sie console.log(greeting), wenn Sie den Wert während der Entwicklung prüfen oder anzeigen möchten. Wenn Sie die Daten an eine andere Funktion übergeben oder speichern wollen, verwenden Sie den String greeting selbst.
Das Objekt Intl.NumberFormat verwenden
Für Währungen, Prozentangaben und andere Zahlenwerte verwenden Sie Intl.NumberFormat. Es wendet Gruppentrennzeichen, Dezimalregeln und die Platzierung des Währungssymbols für die gewählte Locale an. Es formatiert eine Zahl, keinen beliebigen Text.
const amount = 123456.789;
const formattedAmount = new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD"
}).format(amount);
console.log(formattedAmount);
$123,456.79
Wählen Sie Locale und Währung passend zum Kontext der Nutzenden, statt anzunehmen, dass alle US-Dollar verwenden. Beispielsweise gelten mit de-DE und EUR die deutschen Konventionen für einen Eurobetrag. Satzzeichen und Position des Symbols hängen von der Locale ab. Setzen Sie einen Währungsbetrag daher nicht selbst aus einem Symbol und einer Zahl zusammen.
Die Bibliothek sprintf-js verwenden
Wenn sich eine Formatzeichenfolge mit Platzhaltern leichter pflegen lässt, installieren Sie das Paket sprintf-js mit npm install sprintf-js und importieren Sie dessen Funktion sprintf. Der Platzhalter %s nimmt einen String entgegen, während %.1f eine Zahl mit einer Nachkommastelle formatiert.
Wenn name beispielsweise auf "Bob" und score auf 95.5 gesetzt ist, ergibt der Aufruf sprintf("Player %s scored %.1f points", name, score) die Nachricht Player Bob scored 95.5 points. In einem CommonJS-Projekt erhalten Sie die Funktion mit const sprintf = require("sprintf-js").sprintf; in einem ES-Modul importieren Sie sie mit import { sprintf } from "sprintf-js". Das Paket muss im Projekt installiert sein, bevor einer der beiden Importe funktioniert.
Verwenden Sie diese Bibliothek, wenn die Formatzeichenfolge selbst nützlich ist, etwa wenn Sie eine Konvention im printf-Stil einhalten müssen. Für eine kurze Nachricht mit wenigen Werten ist ein Template-Literal in der Regel leichter lesbar. Fügen Sie String.prototype keine format-Methode hinzu: Änderungen an einem eingebauten Prototyp können mit anderem Code kollidieren. Eine Bibliothek oder eigenständige Hilfsfunktion macht das Verhalten ausdrücklich sichtbar.
Fazit
Wählen Sie das Werkzeug passend zu dem Wert, den Sie formatieren möchten. Template-Literale verbinden Text mit Variablen und Ausdrücken; Intl.NumberFormat übernimmt die Locale-gerechte Darstellung von Zahlen; und sprintf-js bietet Platzhalter im printf-Stil, wenn diese Syntax benötigt wird. JavaScript hat kein direktes integriertes Äquivalent zu printf oder String.Format. Mit console.log können Sie einen Wert anzeigen, doch das ist etwas anderes, als einen String zu erstellen.
Häufig gestellte Fragen
-
Was ist das JavaScript-Äquivalent zu
printf?
Ein integriertes Äquivalent gibt es nicht. Für die übliche Interpolation verwenden Sie ein Template-Literal, für Formatbezeichner im printf-Stilsprintf-js. -
Wie formatiere ich eine Zahl als Währungsbetrag?
Rufen Sienew Intl.NumberFormat(locale, { style: "currency", currency }).format(amount)auf und wählen Sie eine für die nutzende Person passende Locale und Währung. -
Können Template-Literale mehrere Zeilen umfassen?
Ja. Zeilenumbrüche innerhalb der Backticks gehören zum resultierenden String. -
Formatiert
console.logStrings wieprintf?
Nein.console.logschreibt Werte in eine Konsole und ist zum Debuggen nützlich; es ist kein universeller String-Formatierer. -
Welche Methode ist am schnellsten?
Hier liegen keine Messungen vor, die einen Leistungsvergleich belegen. Wählen Sie anhand des benötigten Ausgabeformats. Wenn die Formatierungsgeschwindigkeit wichtig ist, messen Sie sie in Ihrer eigenen Anwendung.