Неопознанный символ пробела в Java

При извлечении некоторого html с веб-страницы у меня есть некоторые элементы, содержащие текст, который заканчивается неизвестным или несогласованным символом пробела (т.е. не соответствует "\\ s" ):

<span>Monday </span>

В java, чтобы проверить, что это за символ, я делаю:

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

а значение я равно: 160

Кто-нибудь знает, что это? И как я могу соответствовать этому?

Спасибо

Ответы

Ответ 1

Это неразрывное пространство. Согласно Pattern Javadocs, \\s соответствует [ \t\n\x0B\f\r], поэтому вам нужно явно добавить \xA0 в ваше регулярное выражение, если вы хотите сопоставить его.

Ответ 2

Этот \u00A0, также известный как неразрывное пространство. Если вы знаете HTML, вы поймете, что это то же пространство, что представлено &nbsp;. По-видимому, он использовал его вместо обычного пространства.

Ответ 3

Попробуйте использовать это для сопоставления пробелов

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

Ответ 4

Я сделал эту таблицу один раз, чтобы показать вам некоторые из определений пробелов, используемых в Java. Это довольно увлекательно (если вы такие странные, как я).

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

Кстати, Guava CharMatcher.WHITESPACE отслеживает последний стандарт Unicode 5.x и поэтому часто является лучшим выбором, чем методы JDK.

http://guava-libraries.googlecode.com