Strip Leading and Trailing Spaces From Java String
Asked Answered
I

8

291

Is there a convenience method to strip any leading or trailing spaces from a Java String?

Something like:

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

Result:

no spaces:keep this

myString.replace(" ","") would replace the space between keep and this.

Inartificial answered 11/7, 2011 at 15:37 Comment(4)
It's unfortunate, but it means that the answers here were useful to people. I upvoted for that reason only.Inchoation
Whilst this may be a duplicate, this is by far a better presented question. If anything, the other should be close as a duplicate of this one.Entwistle
I switched the duplicates because this Q&A has far more views and favorites, and the other Q&A is actually a debugging question.Certainty
Made an answer with the solution from JDK/11 API - String.strip to this.Wivern
C
618

You can try the trim() method.

String newString = oldString.trim();

Take a look at javadocs

Commotion answered 11/7, 2011 at 15:39 Comment(1)
Works as a backward-compatible replacement for Java 11's String.strip(). I haven't had time to explore the subtle differences.Kassala
P
87

Use String#trim() method or String allRemoved = myString.replaceAll("^\\s+|\\s+$", "") for trim both the end.

For left trim:

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

For right trim:

String rightRemoved = myString.replaceAll("\\s+$", "");
Paranoia answered 11/7, 2011 at 15:44 Comment(1)
This has the added benefit of being able to tell how many leading/trailing spaces there are in the string.Descent
S
34

From the docs:

String.trim();
Strathspey answered 11/7, 2011 at 15:40 Comment(0)
I
18

trim() is your choice, but if you want to use replace method -- which might be more flexiable, you can try the following:

String stripppedString = myString.replaceAll("(^ )|( $)", "");
Industrials answered 11/7, 2011 at 15:42 Comment(2)
what all does it replace? Spaces and newlines maybe ?Dichotomy
I was searching for a solution to just remove trailing spaces but not leading spaces. I used: str.replaceAll("\\s*$", "") Thank you!Maggot
W
4

With Java-11 and above, you can make use of the String.strip API to return a string whose value is this string, with all leading and trailing whitespace removed. The javadoc for the same reads :

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

The sample cases for these could be:--

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"
Wivern answered 23/7, 2018 at 17:10 Comment(2)
PS: Migrating the answer here based on the comments from - #3796621Wivern
Also see Difference between String trim() and strip() methods in Java 11.Certainty
L
1

To trim specific char, you can use:

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

Here will strip leading and trailing space and comma.

Laise answered 3/1, 2019 at 7:17 Comment(0)
I
1

s.strip() you can use from java 11 onwards.

s.trim() you can use.

Incautious answered 3/10, 2020 at 10:4 Comment(0)
O
-1
private void capitaliseEveryWordInASentence() {

    String mm = "Hello there, this is the cluster";

    String[] words = mm.split(" ");
    String outt = "";

    for (String w : words) {

        outt = outt + Character.toUpperCase(w.charAt(0)) + w.substring(1) + " ";
    }

    System.out.println(outt.trim());
}
Orest answered 18/1, 2022 at 0:43 Comment(2)
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.Imagination
Looks like you're answering a totally different question here.Lysozyme

© 2022 - 2024 — McMap. All rights reserved.