Füllen Sie einen String in Java mit Nullen oder Leerzeichen auf

1. Übersicht

In diesem kurzen Tutorial erfahren Sie, wie Sie einen String in Java auffüllen. Wir konzentrieren uns hauptsächlich auf ein linkes Feld, dh wir fügen die führenden Leerzeichen oder Nullen hinzu, bis die gewünschte Länge erreicht ist.

Der Ansatz für den rechts aufgefüllten String ist sehr ähnlich, daher werden wir nur auf die Unterschiede hinweisen.

2. Füllen Sie einen String mit benutzerdefinierten Methoden auf

Die String- Klasse in Java bietet keine bequeme Methode zum Auffüllen. Erstellen wir daher mehrere Methoden selbst. Lassen Sie uns jedoch zunächst einige Erwartungen setzen:

assertEquals(" 123456", padLeftZeros("123456", 10)); assertEquals("0000123456", padLeftZeros("123456", 10));

2.1. Verwenden von StringBuilder

Wir können dies mit StringBuilder und einer prozeduralen Logik erreichen:

public String padLeftZeros(String inputString, int length) { if (inputString.length() >= length) { return inputString; } StringBuilder sb = new StringBuilder(); while (sb.length() < length - inputString.length()) { sb.append('0'); } sb.append(inputString); return sb.toString(); }

Wir können hier sehen, dass wir die unveränderte Version zurückgeben, wenn die Länge des Originaltextes gleich oder größer als die gewünschte Länge ist. Andernfalls erstellen wir einen neuen String, der mit Leerzeichen beginnt und den ursprünglichen hinzufügt.

Wenn wir mit einem anderen Zeichen auffüllen möchten , können wir es natürlich auch anstelle einer 0 verwenden .

Wenn wir das rechte Pad verwenden möchten, müssen wir stattdessen nur einen neuen StringBuilder (inputString) ausführen und dann die Leerzeichen am Ende hinzufügen.

2.2. Mit Teilzeichenfolge

Eine andere Möglichkeit, das linke Auffüllen durchzuführen, besteht darin , einen String mit der gewünschten Länge zu erstellen , der nur Pad-Zeichen enthält, und dann die Methode substring () zu verwenden :

StringBuilder sb = new StringBuilder(); for (int i = 0; i < length; i++) { sb.append(' '); } return sb.substring(inputString.length()) + inputString;

2.3. Verwenden von String.format

Und schließlich können wir seit Java 5 String .format () verwenden :

return String.format("%1$" + length + "s", inputString).replace(' ', '0');

Wir sollten beachten, dass der Auffüllvorgang standardmäßig mit Leerzeichen ausgeführt wird. Das ist der Grund, warum wir die replace () -Methode verwenden müssen, wenn wir mit Nullen oder einem anderen Zeichen auffüllen möchten.

Für das richtige Pad müssen wir nur ein anderes Flag verwenden: % 1 $ -

3. Füllen Sie einen String mit Bibliotheken auf

Und es gibt externe Bibliotheken, die bereits Auffüllfunktionen bieten.

3.1. Apache Commons Lang

Apache Commons Lang bietet ein Paket von Java-Dienstprogrammklassen. Eines der beliebtesten ist das StringUtils .

Um es zu verwenden, müssen wir es in unser Projekt aufnehmen, indem wir seine Abhängigkeit zu unserer Datei pom.xml hinzufügen :

 org.apache.commons commons-lang3 3.8.1 

Und dann übergeben wir den inputString und die Länge , genau wie die Methoden, die wir erstellt haben. Wir können auch das Auffüllzeichen übergeben:

assertEquals(" 123456", StringUtils.leftPad("123456", 10)); assertEquals("0000123456", StringUtils.leftPad("123456", 10, "0"));

Auch hier wird der String standardmäßig mit Leerzeichen aufgefüllt, oder wir müssen explizit ein anderes Pad-Zeichen festlegen.

Es gibt auch entsprechende rightPad () -Methoden.

Weitere Funktionen von Apache Commons Lang 3 finden Sie in unserem Einführungs-Tutorial. Wenn Sie andere Möglichkeiten der String- Manipulation mit der StringUtils- Klasse sehen möchten , lesen Sie bitte diesen Artikel .

3.2. Google Guava

Eine weitere Bibliothek, die wir verwenden können, ist Googles Guave. Natürlich müssen wir es zuerst dem Projekt hinzufügen, indem wir seine Abhängigkeit hinzufügen:

 com.google.guava guava 27.0-jre 

Und dann benutze die Strings- Klasse :

assertEquals(" 123456", Strings.padStart("123456", 10, ' ')); assertEquals("0000123456", Strings.padStart("123456", 10, '0'));

Diese Methode enthält kein Standard-Pad-Zeichen, daher müssen wir es jedes Mal übergeben.

Für das rechte Pad können wir die padEnd () -Methode verwenden.

Die Guava-Bibliothek bietet viel mehr Funktionen und wir haben viele davon behandelt. Hier finden Sie Artikel zu Guave .

4. Fazit

In diesem kurzen Artikel haben wir gezeigt, wie wir einen String in Java auffüllen können. Wir haben Beispiele mit eigenen Implementierungen oder vorhandenen Bibliotheken vorgestellt.

Einen vollständigen Quellcode finden Sie wie gewohnt auf GitHub.