String Format in Java? Zentrieren?
Wenn ich etwas in der Art String.format("%-20s", "text") ausgeben möchte. Gibt es da auch ein Zeichen, dass das ganze zentriert wird anstatt rechts- oder linksbündig? Vielen Dank.
2 Antworten
Bin kein Experte mit Stringformat, aber soweit ich weiß nicht.
Woher ich das weiß:Studium / Ausbildung
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Programmiersprache
In Java (bis Version 19) ist das nicht vorgesehen. Der einfachste Weg wird wohl eine Hilfsfunktion sein:
static String center ( String s, int width )
{
if ( width <= s.length() )
return s;
return " ".repeat( (width-s.length())/2 )
+ s
+ " ".repeat( (width-s.length()+1)/2 );
}
String.format("%s", center("text", 20));
Wenn Du statt einem String eine eigene Klasse ausgeben willst, könntest Du diese als Formattable implementieren und in formatTo() das ALTERNATE-Flag ('#') zum Zentrieren nutzen. Dann klappt auch
String.format("%#20s", myObject);
Dass das nicht in String implementiert ist, ist meiner Ansicht nach ein Designfehler. Du kannst ja mal Oracle anschreiben und diese Erweiterung vorschlagen.