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

2022-09-01 01:29:25

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

Apache Commons的StringUtils.strip()稍微好一些,但使用JDK的Charact.isWhitespace(),它不承认不间断空格为空格

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

顺便说一句,有没有一个比我应该用于这类东西的更好的库?commons-lang


答案 1

谷歌最近推出了番石榴库它可能具有您要查找的内容:

CharMatcher.inRange('\0', ' ').trimFrom(str)

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

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

CharMatcher.WHITESPACE.trimFrom(str)

答案 2

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

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

String s = "  \t testing \u00a0"
s = CharMatcher.WHITESPACE.trimFrom(s);