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

Posted

技术标签:

【中文标题】从 Java 字符串中去除前导和尾随空格【英文标题】:Strip Leading and Trailing Spaces From Java String 【发布时间】:2011-10-02 22:05:12 【问题描述】:

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

类似:

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

结果:

no spaces:keep this

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

【问题讨论】:

很不幸,但这意味着这里的答案对人们有用。我只是出于这个原因投票。 虽然这可能是重复的,但这是一个更好的问题。如果有的话,另一个应该是这个的副本。 我切换了重复,因为这个问答有更多的观点和收藏,而另一个问答实际上是一个调试问题。 已通过solution from JDK/11 API - String.strip 对此进行了回答。 【参考方案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());

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。 看起来你在这里回答了一个完全不同的问题。【参考方案2】:

s.strip() 你可以从 java 11 开始使用。

s.trim() 你可以使用。

【讨论】:

【参考方案3】:

对于 Java-11 及更高版本,您可以使用 String.strip API 返回一个字符串,其值为该字符串,并删除所有前导和尾随空格。相同的 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:根据来自 - ***.com/questions/3796121/… 的 cmets 迁移此处的答案 另见Difference between String trim() and strip() methods in Java 11【参考方案4】:

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

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

这里将去掉前导和尾随空格逗号

【讨论】:

【参考方案5】:

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

对于左修剪:

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

右修剪:

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

【讨论】:

这有一个额外的好处是能够知道字符串中有多少前导/尾随空格。【参考方案6】:

你可以试试 trim() 方法。

String newString = oldString.trim();

看看javadocs

【讨论】:

作为 Java 11 的 String.strip() 的向后兼容替代品。我还没有时间探索细微的差异。【参考方案7】:

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

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

【讨论】:

它取代了什么?空格和换行符可能吗? 我正在寻找一种解决方案,只删除尾随空格而不是前导空格。我用过:str.replaceAll("\\s*$", "") 谢谢!【参考方案8】:

来自docs:

String.trim();

【讨论】:

以上是关于从 Java 字符串中去除前导和尾随空格的主要内容,如果未能解决你的问题,请参考以下文章

Javascript从多行字符串中删除前导和尾随空格

如何在Java中仅删除字符串的尾随空格并保留前导空格?

如何删除前导和尾随的空格以及字符串中的多个空格? [复制]

可以将 Jackson 配置为从所有字符串属性中修剪前导/尾随空格吗?

如何以标准方式修剪前导/尾随空格?

在第一个连字符之前隔离字符串的前导部分并从匹配中省略任何尾随空格