Entfernen Sie führende und nachfolgende Leerzeichen von Java-Zeichenfolgen

278

Gibt es eine bequeme Methode, um führende oder nachfolgende Leerzeichen aus einem Java-String zu entfernen?

Etwas wie:

String myString = "  keep this  ";
String stripppedString = myString.strip();
System.out.println("no spaces:" + strippedString);

Ergebnis:

no spaces:keep this

myString.replace(" ","") würde den Raum zwischen halten und dies ersetzen.

Tyler DeWitt
quelle
7
Es ist unglücklich, aber es bedeutet, dass die Antworten hier für die Menschen nützlich waren. Ich habe nur aus diesem Grund gestimmt.
Alex D
11
Dies ist zwar ein Duplikat, aber bei weitem eine besser präsentierte Frage. Wenn überhaupt, sollte der andere als Duplikat dieses einen nah sein.
Thecoshman
1
Ich habe die Duplikate gewechselt, weil diese Fragen und Antworten viel mehr Ansichten und Favoriten haben und die anderen Fragen und Antworten tatsächlich eine Debugging-Frage sind.
Radiodef
1
Mit der Lösung von JDK / 11 API eine Antwort gegeben - String.stripdarauf.
Naman

Antworten:

601

Sie können die trim () -Methode ausprobieren.

String newString = oldString.trim();

Schauen Sie sich Javadocs an

woliveirajr
quelle
1
Funktioniert als abwärtskompatibler Ersatz für String.strip () von Java 11. Ich hatte keine Zeit, die subtilen Unterschiede zu untersuchen.
Josiah Yoder
80

Verwenden Sie die String#trim()Methode oder String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")zum Trimmen beider Enden.

Für die linke Trimmung:

String leftRemoved = myString.replaceAll("^\\s+", "");

Für die richtige Trimmung:

String rightRemoved = myString.replaceAll("\\s+$", "");
Prinz John Wesley
quelle
3
Dies hat den zusätzlichen Vorteil, dass Sie feststellen können, wie viele führende / nachfolgende Leerzeichen sich in der Zeichenfolge befinden.
Błażej Czapp
18

trim () ist Ihre Wahl, aber wenn Sie eine replaceMethode verwenden möchten, die möglicherweise flexibler ist, können Sie Folgendes versuchen:

String stripppedString = myString.replaceAll("(^ )|( $)", "");
James.Xu
quelle
Was alles ersetzt es? Leerzeichen und Zeilenumbrüche vielleicht?
Jemand irgendwo
Ich suchte nach einer Lösung, um nur nachfolgende Leerzeichen, aber keine führenden Leerzeichen zu entfernen. Ich habe verwendet: str.replaceAll ("\\ s * $", "") Danke!
lisa p.
4

Mit Java-11 und höher können Sie die String.stripAPI verwenden, um eine Zeichenfolge zurückzugeben, deren Wert diese Zeichenfolge ist, wobei alle führenden und nachfolgenden Leerzeichen entfernt werden. Der Javadoc für das gleiche lautet:

/**
 * Returns a string whose value is this string, with all leading
 * and trailing {@link Character#isWhitespace(int) white space}
 * removed.
 * <p>
 * If this {@code String} object represents an empty string,
 * or if all code points in this string are
 * {@link Character#isWhitespace(int) white space}, then an empty string
 * is returned.
 * <p>
 * Otherwise, returns a substring of this string beginning with the first
 * code point that is not a {@link Character#isWhitespace(int) white space}
 * up to and including the last code point that is not a
 * {@link Character#isWhitespace(int) white space}.
 * <p>
 * This method may be used to strip
 * {@link Character#isWhitespace(int) white space} from
 * the beginning and end of a string.
 *
 * @return  a string whose value is this string, with all leading
 *          and trailing white space removed
 *
 * @see Character#isWhitespace(int)
 *
 * @since 11
 */
public String strip()

Die Beispielfälle für diese könnten sein:

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"
Naman
quelle
PS : Migrieren Sie die Antwort hier basierend auf den Kommentaren von - stackoverflow.com/questions/3796121/…
Naman
0

Um bestimmte Zeichen zu trimmen, können Sie Folgendes verwenden:

String s = s.replaceAll("^(,|\\s)*|(,|\\s)*$", "")

Hier werden führende und nachfolgende Leerzeichen und Kommas entfernt .

Galeere
quelle