Java中的身份不明的空白字符

时间:2009-11-09 17:44:02

标签: java whitespace

在从网页中提取一些html时,我有一些元素包含以未知或不匹配的空格字符结尾的文本(即与“\\ s”不匹配):

<span>Monday </span>

在java中,为了检查这个角色是什么,我正在做:

String s = getTheSpanContent();
char c = s.charAt(s.length() -1);
int i = (int) c;

,i的值为:160

任何人都知道这是什么?我怎么能匹配呢?

由于

4 个答案:

答案 0 :(得分:22)

这是一个non-breaking space。根据{{​​3}},\\s匹配[ \t\n\x0B\f\r],因此如果您想匹配它,则必须明确地将\xA0添加到正则表达式。

答案 1 :(得分:4)

那是\u00A0,也称为非破坏空间。如果您了解HTML,您就会明白它与&nbsp;所代表的空间相同。显然,有人使用它而不是普通的空间。

答案 2 :(得分:4)

尝试使用它来匹配空格

Character.isSpaceChar(c) || c <= ' ';

答案 3 :(得分:4)

我制作了一次这个电子表格,向您展示了Java中使用的空格的一些不同定义。它非常迷人(如果你像我一样奇怪)。

http://spreadsheets.google.com/pub?key=pd8dAQyHbdewRsnE5x5GzKQ

顺便提一下,Guava的CharMatcher.WHITESPACE跟踪最新的Unicode 5.x标准,因此通常是比JDK方法更好的选择。

http://guava-libraries.googlecode.com