从Java字符串中去除前导和尾随空格


278

是否有一种方便的方法可以从Java字符串中剥离任何前导或尾随空格?

就像是:

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

结果:

no spaces:keep this

myString.replace(" ","") 将替换keep和this之间的空间。


7
不幸的是,但这意味着这里的答案对人们有用。我仅出于这个原因投票。
Alex D

11
虽然这可能是重复的,但到目前为止,这是一个更好的问题。如果有的话,另一个应该作为该副本的副本而接近。
thecoshman 2014年

1
我切换了重复项,因为此“问答”具有更多的视图和收藏夹,而其他“问答”实际上是一个调试问题。
Radiodef '18

1
制造与答案从JDK / 11 API解决方案 - String.strip这一点。
纳曼

Answers:


601

您可以尝试trim()方法。

String newString = oldString.trim();

看看javadocs


1
作为Java 11的String.strip()的向后兼容替代品。我没有时间探索细微的差异。
Josiah Yoder

80

使用String#trim()方法或String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")修剪两端。

对于左修剪:

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

对于右装饰:

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

3
这具有能够分辨出字符串中有多少个前导/尾随空格的额外好处。
BłażejCzapp


18

trim()是您的选择,但是如果您想使用replace方法-可能更灵活,则可以尝试以下操作:

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

它会取代什么?空格和换行符?
某处某人2014年

我在寻找一种解决方案,只删除尾随空格而不删除前导空格。我用过:str.replaceAll(“ \\ s * $”,“”)谢谢!
丽莎

4

在Java-11及更高版本中,您可以利用String.stripAPI返回一个值为该字符串的字符串,并删除所有前导和尾随空格。相同的javadoc读取:

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

这些示例案例可能是:-

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

PS: -基于从注释这里迁移答案 stackoverflow.com/questions/3796121/...
纳曼


0

要修剪特定字符,可以使用:

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

这将除去开头和结尾的空格逗号

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.