Java -String -Formatierung

Java -String -Formatierung
Formatieren einer Zeichenfolge, die andere Zeichen, Unterstrahlen oder numerische Werte auf eine bestimmte Weise in eine Hauptzeichenfolge eingefügt werden können. Betrachten Sie den Code: String Str = String.Format ("Es gibt %s, %s, %s und %s."," Orange "," Banane "," Birne "," Zitrone ");
System.aus.println (str);

Die Ausgabe ist:

Es gibt Orange, Banane, Birne und Zitrone.

In dieser statischen Format () -Methode der String -Klasse gibt es fünf Argumente. Das erste Argument ist die wichtigste Interessenfolge, deren Inhalt vier Platzhalter enthält, von denen jeder %s ist. Zusammen werden der Rest der Argumente als Argumentliste bezeichnet. Alles, was gleich ist, entspricht das erste Argument in der Argumentliste dem ersten Ortinhaber in der Hauptzeichenfolge (von links). Das zweite Argument in der Liste entspricht dem zweiten Platzhalter in der Hauptzeichenfolge. Das dritte Argument in der Argumentliste entspricht dem dritten Platzhalter in der Hauptzeichenfolge und so weiter. Bei der Ausgabe werden die Platzhalter durch ihre entsprechenden Argumente vorbestimmt aus der Argumentliste ersetzt.

Hier werden fünf Argumente berücksichtigt. Der allererste ist nicht Teil der betrachteten Argumentliste. Es wird tatsächlich als Formatzeichenfolge bezeichnet, obwohl es noch formatiert werden muss. Es ist immer eine Zeichenfolge. Der Rest der Argumente, die die Argumentliste bilden. Hinweis: Ein Platzhalter hier heißt Formatspezifizierer.

Alle oben genannten Argumente können durch Variablen ersetzt werden, wie das folgende Codesegment zeigt:

Zeichenfolge a = "orange", b = "banana", c = "pear", d = "lemon";
String fmtstr = "Es gibt %s, %s, %s und %s.";
String Str = String.Format (fmtstr, a, b, c, d);
System.aus.println (str);

Dieser Artikel erläutert die Grundlagen der Formatierung einer Zeichenfolge in Java unter Verwendung von Formatspezifikatoren.

Formatspezifizierersyntax

Die Syntax für den Formatspezifizierer lautet:

%[Argument_index $] [Flags] [Breite] [.Präzision] Konvertierung

Es muss mit dem prozentualen Zeichen, % beginnen. Es muss mit einem Charakter enden, der als Konvertierung bezeichnet wird. Im obigen Code besteht jeder Spezifizierer aus % und 's'. 's' ist die Konvertierung. 's' steht für String. Der Rest der Parameter, die in quadratischen Klammern in der Syntax angegeben sind, sind optional und werden unten erläutert.

Argument_index $
Argument_index ist eine Dezimalbezahlung. Es beginnt von 1. Es kann 1 $, 2 $, 3 $ usw. betragen. Die normalen Korrespondenzen für die Spezifizierer und Argumente in der Argumentliste sind wie folgt: Der erste Spezifizierer links in der Formatzeichenfolge entspricht dem ersten Argument in der Argumentliste (von links); Der zweite Spezifizierer von links in der Formatzeichenfolge entspricht dem zweiten Argument in der Argumentliste; Der dritte Spezifizierer von links in der Formatzeichenfolge entspricht dem dritten Argument in der Argumentliste; usw. Argument_index kann verwendet werden, um diese Reihenfolge zu ändern. Das folgende Codesegment kehrt die Reihenfolge um:

String Str = String.Format ("Hier: %4 $ C, %3 $ C, %2 $ C und %1 $ C", '1', '2', '3', '4');
System.aus.println (str);

Die Ausgabe ist:

Hier: 4, 3, 2 und 1

'C' in einem Spezifizierer entspricht einem Charakter in der Argumentliste. Die normale Bestellung beträgt 1 $, 2 $, 3 $, 4 $. Da diese Reihenfolge in der Formatzeichenfolge umgekehrt wurde, wurde die Ausgabe in umgekehrter Reihenfolge herausgekommen.

Wandlung

Die Konvertierung bei der String -Formatierung ist ein spezielles Zeichen. Jeder Formatspezifizierer mit seiner Konvertierung entspricht einem Argument in der Argumentliste. Eine Konvertierung ist ein Charakter. Die folgende Tabelle gibt Conversions und ihre Bedeutungen an:

Conversion -Charaktere und ihre Bedeutungen
Wandlung Bedeutung
B Für die Formatierung eines Arguments, das boolean ist
C Für die Formatierung eines Arguments, das ein Unicode -Charakter ist
S Für die Formatierung eines Arguments, das eine Zeichenfolge ist
D Für die Formatierung eines Arguments, das eine Dezimalbezahlung ist
F Für die Formatierung eines Arguments, das eine Zahl mit einem Dezimalpunkt ist
% Für das Drucken nur % für das Argument " %"
N Um den Rest des Textes rechts zu verursachen, gehen Sie in die nächste Zeile am Ausgang

Die Verwendung von 's' und 'c' wurde oben dargestellt. In diesem Abschnitt wird der Rest der Konvertierungsmetabarakter veranschaulicht.

Der B -Konvertierungscharakter
Das folgende Codesegment zeigt, wie ein Formatspezifizierer für einen Bool durch den Booleschen Wert seines entsprechenden Arguments ersetzt wird:

String Str = String.Format ("Es ist %b, das er bestanden hat.", WAHR);
System.aus.println (str);

Die Ausgabe ist:

Es ist wahr, dass er bestanden hat.

Beachten Sie, dass das Argument wahr nicht in Zitaten ist.

Der D -Konvertierungscharakter
Das folgende Codesegment zeigt, wie ein Formatspezifizierer für eine Dezimalbezahlung durch den Wert seines entsprechenden Arguments ersetzt wird:

String Str = String.Format ("Ich habe %d stiften.", 5);
System.aus.println (str);

Die Ausgabe ist:

Ich habe 5 Stifte.

Beachten Sie, dass das Argument, 5, nicht in Zitaten ist, weil es kein Charakter ist.

Der F -Konvertierungscharakter
Das folgende Codesegment zeigt, wie ein Formatspezifizierer für eine Zahl mit einem Dezimalpunkt durch seinen entsprechenden Argumentwert ersetzt wird:

String Str = String.Format ("%f ist eine unangemessene Fraktion.", 2.5);
System.aus.println (str);

Beachten Sie zunächst, dass das Argument 2.5, ist nicht in Zitaten, weil es keine Zeichenfolge ist. Die Ausgabe ist:

2.500000 ist ein unangemessener Bruch.

2.5 wurde zu 2 formatiert.500000, die Standardformatierung. Es kann auf 2 beschränkt werden.5 Wie angegeben - siehe unten.

Der % Conversion -Charakter
Da das prozentuale Symbol verwendet wird, um den Formatspezifizierer zu identifizieren, muss ein Schema entwickelt werden, um das % Symbol als gewöhnliches Zeichen in der Formatzeichenfolge zu haben. Das Schema ist einfach: Haben Sie % als Zeichenargument in der Argumentliste. Verwenden Sie dann das % Conversion -Zeichen in der Position in der Formatzeichenfolge, in der das prozentuale Symbol angezeigt werden sollte. Das folgende Codesegment zeigt dies:

String Str = String.Format ("Es ist 100 %%.", '%');
System.aus.println (str);

Die Ausgabe ist:

Es ist 100%.

Der Formatspezifizierer ist %%. Der erste %des Paares, %%, identifiziert den Spezifizierer. Der zweite % ist der Konversionscharakter. Als Argument sind % in einzelnen Zitaten.

Der N -Konvertierungscharakter
Verwenden Sie n n. N ist ein Konvertierungszeichen, der in einem Formatspezifizierer verwendet werden soll. Illustration:

String Str = String.Format ("Erster Satz.%nSecond -Satz.",'\N');
System.aus.println (str);

Die Ausgabe ist:

Erster Satz.
Zweiter Satz.

Der .Präzisionsparameter des Formatspezifizers

Dieser Parameter gibt die Anzahl der Dezimalstellen für eine Zahl mit Dezimalstellen an. Es ist eine ganze Zahl, vor der der Punkt vorausgeht. Wie oben festgestellt, die erwartete Anzahl von Dezimalstellen für 2.5 ist ein Charakter; Es wurden aber 6 Zeichen verwendet und 2 gaben 2.500000. Das folgende Codesegment beschränkt dies auf 3 Dezimalstellen:

String Str = String.Format("%.3F ist ein unangemessener Bruch.", 2.5);
System.aus.println (str);

Die Ausgabe ist:

2.500 ist ein unangemessener Bruch.

Der Präzisionscode hier ist .3 .

Der Breitenparameter des Formatspezifizierers

Die Breite ist die minimale Anzahl von Zeichen für den Ersatz in der Formatzeichenfolge. Einige Argumententypen ersetzen den Formatspezifizierer durch ihre erwartete Breite. Andere können es jedoch durch eine kleinere oder größere Breite ersetzen. Wie oben festgestellt, die erwartete Breite für 2.5 sind drei Zeichen; Aber 8 Zeichen wurden verwendet, wobei 2 gaben.500000. Das folgende Codesegment sollte dies auf eine Breite von 4 Zeichen und drei Dezimalstellen beschränken:

String Str = String.Format ("%4.3F ist ein unangemessener Bruch.", 2.5);
System.aus.println (str);

Die Ausgabe ist:

2.500 ist ein unangemessener Bruch.

Der Formatspezifizierer ist %4.3f, wobei 4 die Breite ist und 3 die Anzahl der Dezimalstellen ist. Es gibt tatsächlich 5 Zeichen am Ausgang, einschließlich des Dezimalpunkts, so dass 4 tatsächlich ignoriert wurden. Das folgende Codesegment erzeugt eine Breite von 7 Zeichen und 3 Dezimalstellen:

String Str = String.Format ("%7.3F ist ein unangemessener Bruch.", 2.5);
System.aus.println (str);

Die Ausgabe ist:

"2.500 ist ein unangemessener Bruch.

Beachten Sie, dass zwei Space-Zeichen der Nummer vorausgehen, damit die vollständige Nummer eine Sieben-Charakter-Breite ausgibt. Die Anzahl der Dezimalstellen beträgt 3 . Hier gibt es 7 Charaktere, einschließlich des Dezimalpunkts.

Der Flags -Parameter des Formatspezifizers

Die 0 Flagge
Anstatt einer Zahl mit Leerzeichen zu sein, kann der Zahl 0 vorangegangen werden. Das folgende Codesegment zeigt dies:

String Str = String.Format ("%07.3F ist ein unangemessener Bruch.", 2.5);
System.aus.println (str);

Die Ausgabe ist:

002.500 ist ein unangemessener Bruch.

Der genaue Formatspezifizierer hier ist,

%07.3f

die mit der Formatspezifikatorsyntax verglichen werden sollte,

%[Argument_index $] [Flags] [Breite] [.Präzision] Konvertierung

Die Reihenfolge der Metabarakter des genauen Formatspezifizers respektiert die Reihenfolge der Syntax des Formatspezifizierers. Das optionale Flag, 0, kommt vor der optionalen Breite 7, die vor der optionalen Präzision kommt, .3, gemäß der Syntax. 'f' ist die Umwandlung (immer noch ein Meta-Charakter).

Die + Flagge
Mit der + Flag + . Das folgende Programm zeigt dies:

String Str = String.Format ("Das Ergebnis ist %+D Euro.", -5);
System.aus.println (str);

Die Ausgabe ist:

Das Ergebnis ist -5 Euro.

Die optionale Breite und die Präzisionsparameter sind im genauen Formatspezifizierer %+D nicht enthalten. Hier ist D die Konvertierung für die Ganzzahl.

Betrachten Sie das Codesegment,

String Str = String.Format ("Das Ergebnis ist %+D Euro.", 5);
System.aus.println (str);

Die Ausgabe ist,

Das Ergebnis beträgt +5 Euro.

Abschluss

Die Argumente für die String -Formatmethode sind in zwei Abschnitte unterteilt. Der erste Abschnitt ist das erste Argument, das eine Zeichenfolge sein muss. Es ist die Reihe von Interesse. Es wird als Formatzeichenfolge bezeichnet, obwohl es immer noch einige seiner Unterstriche enthält (formatiert). Der Rest der Argumente wird als Argumentliste bezeichnet. Die Argumentliste enthält die realen Substrings, die formatiert werden müssen. Jede dieser Substrings entspricht einem Formatspezifizierer in der Formatzeichenfolge. Der Formatspezifizierer verwendet Metabarakter zum Format.