String Format in Java? Zentrieren?

2 Antworten

Bin kein Experte mit Stringformat, aber soweit ich weiß nicht.

Woher ich das weiß:Studium / Ausbildung

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.