Usuń wiodące i końcowe spacje z ciągu Java


278

Czy istnieje wygodna metoda usuwania jakichkolwiek początkowych lub końcowych spacji z ciągu Java?

Coś jak:

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

Wynik:

no spaces:keep this

myString.replace(" ","") zastąpiłoby spację między warunkiem a tym.


7
To niefortunne, ale oznacza, że ​​odpowiedzi tutaj były przydatne dla ludzi. Głosowałem tylko z tego powodu.
Alex D

11
Chociaż może to być duplikat, jest to zdecydowanie lepiej przedstawione pytanie. Jeśli cokolwiek, drugie powinno być blisko jako duplikat tego.
thecoshman

1
Zmieniłem duplikaty, ponieważ te pytania i odpowiedzi mają o wiele więcej wyświetleń i ulubionych, a inne pytania i odpowiedzi są w rzeczywistości pytaniem dotyczącym debugowania.
Radiodef,

1
Wykonane odpowiedź z roztworu z JDK / 11 API - String.stripdo tego.
Naman

Odpowiedzi:


601

Możesz wypróbować metodę trim ().

String newString = oldString.trim();

Spójrz na javadocs


1
Działa jako wstecznie kompatybilny zamiennik String.strip () Java 11. Nie miałem czasu na odkrywanie subtelnych różnic.
Josiah Yoder

80

Użyj String#trim()metody lub String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")do przycięcia obu końców.

Do lewego wykończenia:

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

Do prawego wykończenia:

String rightRemoved = myString.replaceAll("\\s+$", "");

3
Ma to tę dodatkową zaletę, że pozwala stwierdzić, ile spacji początkowych / końcowych znajduje się w ciągu.
Błażej Czapp


18

trim () jest twoim wyborem, ale jeśli chcesz użyć replacemetody - która może być bardziej elastyczna, możesz wypróbować następujące czynności:

String stripppedString = myString.replaceAll("(^ )|( $)", "");

co to wszystko zastępuje? Może spacje i nowe linie?
Ktoś gdzieś

Szukałem rozwiązania, aby po prostu usunąć spacje końcowe, ale nie spacje wiodące. Użyłem: str.replaceAll („\\ s * $”, „”) Dziękujemy!
Lisa p.

4

W wersji Java-11 i nowszej możesz użyć String.stripinterfejsu API do zwrócenia ciągu o wartości tego ciągu, z usuniętymi wszystkimi początkowymi i końcowymi spacjami. Jawadok dla tego samego brzmi:

/**
 * 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()

Przykładowe przypadki mogą być następujące:

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"

PS : Migracja tutaj odpowiedzi w oparciu o komentarze z - stackoverflow.com/questions/3796121/...
Naman


0

Aby przyciąć określony znak, możesz użyć:

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

Tutaj usuniesz początkowe i końcowe spacje oraz przecinek .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.