2009-11-09 34 views
15

在从网页提取一些HTML,我有一个包含文本,在一个未知的或不匹配的空白字符结束的一些元素(即不匹配“\\ S”):不明空白字符在Java中

<span>Monday </span> 

在java中,要检查这个人物是什么,我做的:

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

和i的值是:160

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

感谢

+0

匹配它如何?你需要正则表达式还是要使用另一种方法。另外,你想通过匹配来完成什么?我们可以通过更多信息给出更好的答案。 – 2009-11-09 17:54:49

回答

20

这是一个non-breaking space。根据Pattern Javadocs,\\s匹配[ \t\n\x0B\f\r],所以如果你想匹配它,你必须明确地将\xA0添加到你的正则表达式中。

+0

好的,谢谢 - 这与html源代码有关。下面的乔尔的解决方案也适用。 – 2009-11-09 17:57:18

+3

所以我的正则表达式匹配所有空白公司。非破坏是:“[\\ s \\ xA0] +” - 似乎正常工作。欢呼声。 – 2009-11-09 18:07:33

4

\u00A0,也被称为非换空间。如果你知道HTML,你就会明白它与&nbsp;所代表的空间是一样的。显然有人正在使用它,而不是一个正常的空间。

+0

好的,这是有道理的。我可以在源码 中看到 - 但我的解析器将它转换为与\\不匹配的这个字符。欢呼 – 2009-11-09 17:56:10

+0

从你的问题中不清楚你正在寻找一个正则表达式来匹配特定的字符。无论如何,很高兴知道十进制数160等于十六进制A0,因此,你毕竟知道在正则表达式和Unicode图表中使用哪个十六进制代码:) – BalusC 2009-11-09 18:49:26

4

尝试使用此匹配空白

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