ChatGPT解决这个技术问题 Extra ChatGPT

Strip Leading and Trailing Spaces From Java String

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.

It's unfortunate, but it means that the answers here were useful to people. I upvoted for that reason only.
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.
I switched the duplicates because this Q&A has far more views and favorites, and the other Q&A is actually a debugging question.
Made an answer with the solution from JDK/11 API - String.strip to this.

s
szedjani

You can try the trim() method.

String newString = oldString.trim();

Take a look at javadocs


Works as a backward-compatible replacement for Java 11's String.strip(). I haven't had time to explore the subtle differences.
F
Frank Essenberger

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+$", "");

This has the added benefit of being able to tell how many leading/trailing spaces there are in the string.
R
Richard H

From the docs:

String.trim();

J
James.Xu

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("(^ )|( $)", "");

what all does it replace? Spaces and newlines maybe ?
I was searching for a solution to just remove trailing spaces but not leading spaces. I used: str.replaceAll("\\s*$", "") Thank you!
N
Naman

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"

PS: Migrating the answer here based on the comments from - stackoverflow.com/questions/3796121/…
G
Galley

To trim specific char, you can use:

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

Here will strip leading and trailing space and comma.


S
Satya

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

s.trim() you can use.


X
XYZetaAndMeta
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());
}

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.
Looks like you're answering a totally different question here.