在Java中匹配非空格

时间:2010-09-29 17:54:27

标签: java regex string whitespace

我想检测其中包含非空白字符的字符串。现在我正在尝试:

!Pattern.matches("\\*\\S\\*", city)

但它似乎没有起作用。有没有人有什么建议?我知道我可以修剪字符串并测试它是否等于空字符串,但我宁愿这样做

4 个答案:

答案 0 :(得分:8)

你认为正则表达式到底匹配的是什么?

尝试

Pattern p = Pattern.compile( "\\S" );
Matcher m = p.matcher( city );
if( m.find() )
//contains non whitespace

find方法将搜索部分匹配,而不是完全匹配。这似乎是你需要的行为。

答案 1 :(得分:3)

\S(大写s)匹配非空格,因此您不必否定matches的结果。

另外,尝试使用匹配器的方法find而不是Pattern.matches

答案 2 :(得分:3)

city.matches(".*\\S.*")

Pattern nonWhitespace = Pattern.compile(".*\\S.*")
nonWhitspace.matches(city)

答案 3 :(得分:1)

GuavaCharMatcher课程很适合这类事情:

boolean hasNonWhitespace = !CharMatcher.WHITESPACE.matchesAllOf(someString);

根据Unicode标准匹配空白,而不是使用Java的Character.isWhitespace()方法... CharMatcher.JAVA_WHITESPACE匹配。