Füge einen String mit Nullen oder Leerzeichen in Java ein

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

1. Überblick

In diesem kurzen Tutorial erfahren Sie, wie Sie einStringin 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 die rechts gepolstertenString ist sehr ähnlich, daher werden wir nur auf die Unterschiede hinweisen.

2. Füllen Sie aString mit benutzerdefinierten Methoden auf

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

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

2.1. Verwenden vonStringBuilder

Wir können dies mitStringBuilder 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 ein neuesString, , das mit Leerzeichen beginnt, und fügen das ursprüngliche hinzu.

Natürlich, wenn wir wollten Pad mit einem anderen Zeichen könnten wir einfach anstelle von0 verwenden.

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

2.2. Verwenden vonsubstring

Eine andere Möglichkeit, die linke Auffüllung vorzunehmen, istcreate a String with the desired length that contains only pad characters and then use the substring() method:

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

return sb.substring(inputString.length()) + inputString;

2.3. Verwenden vonString.format

Und schließlich können wir seit Java 5String.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. Dies ist der Grund, warum wir diereplace()-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. Pad aString Using Libraries

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

3.1. Apache Commons Lang

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

Um es zu verwenden, müssen wir es in unser Projekt aufnehmen, indem wirits dependency zu unsererpom.xml-Datei hinzufügen:


    org.apache.commons
    commons-lang3
    3.8.1

And then we pass the inputString and the length, just like the methods we created. Wir können auch das Füllzeichen übergeben:

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

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

Es gibt auch entsprechenderightPad()-Methoden.

To explore more features of the Apache Commons Lang 3, you can check out our introductory tutorial. Wenn Sieother ways of the String manipulation using the StringUtils class, please refer to this article sehen möchten.

3.2. Google Guava

Eine weitere Bibliothek, die wir verwenden können, ist GoogleGuava. Natürlich müssen wir es zuerst zum Projekt hinzufügen, indem wirits dependency hinzufügen:


    com.google.guava
    guava
    27.0-jre

And then use the Strings class:

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

Bei dieser Methode gibt es kein Standard-Pad-Zeichen, daher müssen wir es jedes Mal übergeben.

Zum rechten Pad können wir die MethodepadEnd()verwenden.

The Guava library offers much more features and we have covered a lot of them. You can look here for the Guava related articles.

4. Fazit

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

Wie üblich kann ein vollständiger Quellcodeover on GitHub gefunden werden.