如何从Java中的字符串中正确修剪空格?

its*_*dok 41 java string unicode

JDK的String.trim()方法很幼稚,只删除ascii控制字符.

Apache Commons的StringUtils.strip()略胜一筹,但使用的是JDK的Character.isWhitespace(),它不会将不间断的空格识别为空格.

那么在Java中修剪字符串的最完整,Unicode兼容,安全和正确的方法是什么?

顺便说一句,是否有比commons-lang我应该使用的更好的库?

Cra*_*der 58

谷歌最近提供了番石榴库.它可能有你想要的东西:

CharMatcher.inRange('\0', ' ').trimFrom(str)
Run Code Online (Sandbox Code Playgroud)

等效于String.trim(),但您可以自定义要修剪的内容,请参阅JavaDoc.

例如,它有自己的WHITESPACE定义,它与JDK不同,并根据最新的Unicode标准定义,因此您需要的内容可以写成:

CharMatcher.WHITESPACE.trimFrom(str)
Run Code Online (Sandbox Code Playgroud)


its*_*dok 7

我发誓我在发布问题后才看到这一点:谷歌刚刚发布了Guava,一个核心Java实用程序库.

我还没有尝试过这个,但据我所知,这完全符合Unicode:

String s = "  \t testing \u00a0"
s = CharMatcher.WHITESPACE.trimFrom(s);
Run Code Online (Sandbox Code Playgroud)

  • 哈哈,我在5分钟前提供了相同的答案,但后来对其进行了编辑以包含您需要使用的确切代码,然后看到您自己发现的评论. (2认同)