Wie formatiere ich einen String immer auf die gleiche Länge, unabhängig von der Anzahl der chars?

Bei der Formatierung von Strings auf einheitliche Längen ist zu unterscheiden, ob der jeweilige String zu lang oder zu kurz ist. Im ersten Fall muss der String abgeschnitten werden. Im zweiten Fall ist er mit Leerzeichen aufzufüllen. Daraus ergibt sich entweder eine linksbündige oder eine rechtsbündige Darstellung.

Eine einfache Möglichkeit einen String auf eine konstante Länge zu bringen, bietet die Methode format() der Klasse String. Diese Methode hat als erstes Argument einen Formatstring, die weiteren Argumente sind durch die Leerstellen im Formatstring gegeben.

String s1 = "Hello World!";
String s2 = "Das ist ein langer Text";
String s3 = String.format("|%20.20s|\n", s1);
String s4 = String.format("|%20.20s|\n", s2);
String s5 = String.format("|%-20.20s|\n", s1);
String s6 = String.format("|%-20.20s|\n", s2);
System.out.println(s3 + s4 + s5 + s6);

Ausgabe:

|        Hello World!|
|Das ist ein langer T|
|Hello World!        |
|Das ist ein langer T|

Bedeutung der Zeichen im Formatstring %20.20s:

  • % – Kennzeichnet den Beginn einer Leerstelle
  • 20 – Beschreibt die Mindestlänge des Strings. Ist der als Argument übergebene String, der diese Leerstelle sättigt, kürzer als die angegebene Mindestlänge, wird links mit Leerzeichen ausgefüllt. Der String wird also rechtsbündig ausgegeben.
  • .20 – Beschreibt die maximale Länge des Strings. Ist der als Argument übergebene String, der diese Leerstelle sättigt, länger als die angegebene maximale Länge, wird er abgeschnitten.
  • s – Legt fest, dass die Leerstelle mit einem String zu sättigen ist.

In Zeile 5 steht vor der Angabe der Mindestlänge ein Minuszeichen. Dadurch wird ausgedrückt, dass der als Argument übergebene String s1 linksbündig ausgegeben wird.

Mehr zur Arbeit mit Formatstrings findest du im Artikel “Wie gebe ich eine bestimmte Formatierung aus?” in unserer FAQ.