509 Stimmen

Wie kann ich einen String in Java auffüllen?

Gibt es eine einfache Möglichkeit, Strings in Java aufzufüllen?

Scheint wie etwas, das in einige StringUtil-ähnliche API sein sollte, aber ich kann nichts finden, die dies tut.

732voto

RealHowTo Punkte 33858

Seit Java 1.5, String.format() kann verwendet werden, um eine gegebene Zeichenkette links/rechts aufzufüllen.

public static String padRight(String s, int n) {
     return String.format("%-" + n + "s", s);  
}

public static String padLeft(String s, int n) {
    return String.format("%" + n + "s", s);  
}

...

public static void main(String args[]) throws Exception {
 System.out.println(padRight("Howto", 20) + "*");
 System.out.println(padLeft("Howto", 20) + "*");
}

Und die Ausgabe ist:

Howto               *
               Howto*

295voto

leo Punkte 3332

Auffüllen auf 10 Zeichen:

String.format("%10s", "foo").replace(' ', '*');
String.format("%-10s", "bar").replace(' ', '*');
String.format("%10s", "longer than 10 chars").replace(' ', '*');

Ausgabe:

  *******foo
  bar*******
  longer*than*10*chars

Anzeige von '*' für Zeichen des Passworts:

String password = "secret123";
String padded = String.format("%"+password.length()+"s", "").replace(' ', '*');

Die Ausgabe hat die gleiche Länge wie die Kennwortzeichenfolge:

  secret123
  *********

209voto

GaryF Punkte 23306

Apache StringUtils hat mehrere Methoden: leftPad , rightPad , center y repeat .

Aber bitte beachten Sie, dass - wie andere bereits erwähnt und in diese Antwort - String.format() und die Formatter Klassen im JDK sind bessere Optionen. Verwenden Sie sie statt des Commons-Codes.

87voto

Garrett Hall Punkte 28608

Unter Guave ist dies einfach:

Strings.padStart("string", 10, ' ');
Strings.padEnd("string", 10, ' ');

44voto

Shimon Doodkin Punkte 3946

Etwas Einfaches:

Der Wert sollte eine Zeichenkette sein. Konvertieren Sie ihn in eine Zeichenkette, wenn dies nicht der Fall ist. Wie "" + 123 ou Integer.toString(123)

// let's assume value holds the String we want to pad
String value = "123";

Die Zeichenkette beginnt mit der Wertlänge char index und endet mit der Länge padded:

String padded="00000000".substring(value.length()) + value;

// now padded is "00000123"

Genauer

Polster rechts:

String padded = value + ("ABCDEFGH".substring(value.length())); 

// now padded is "123DEFGH"

Polster links:

String padString = "ABCDEFGH";
String padded = (padString.substring(0, padString.length() - value.length())) + value;

// now padded is "ABCDE123"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X