StringBuilder sb = new StringBuilder();
// Send all output to the Appendable object sb
Formatter formatter = new Formatter(sb, Locale.US);
// Explicit argument indices may be used to re-order output.
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
// -> " d c b a"
Warum wird in diesem Fall eine 2 an $ angehängt?
Die
2$
Mittel setzen hier das zweite Argument aus der Liste. Es$
folgt eine Zahl, die nicht davor steht. Ebenso4$
bedeutet hier das vierte Argument.Zur Verdeutlichung können wir das
%2$2s
Format in seine Teile zerlegen:%
- gibt an, dass dies eine Formatzeichenfolge ist2$
- zeigt, dass das zweite Wertargument hier gesetzt werden sollte2
- Das Format ist zwei Zeichen langs
- Formatieren Sie den Wert als StringWeitere Informationen finden Sie in der Dokumentation .
quelle
Dies sind Positionsargumente, bei denen
%4$2s
Signale das vierte Argument als Zeichenfolge mit Breite 2 formatieren . Dies ist besonders hilfreich, wenn Zeichenfolgen für die Lokalisierung bereitgestellt werden, bei denen Argumente neu angeordnet werden müssen, ohne den Quellcode zu berühren.quelle
%
: Formatzeichenfolge4$
: viertes Wertargument2
: width (Länge, wenn das Argument gedruckt wird)s
: Es ist eine String-Argument-KonvertierungZum Beispiel das folgende Snippet:
erzeugt eine Ausgabe von:
(Breite von 5 Zeichen pro Argument, mit Leerzeichen aufgefüllt)
Wenn Sie
5
durch ersetzen2
, wird die folgende Ausgabe erzeugt:Sieh den Unterschied? :) :)
quelle