Ответ 1
Это неразрывное пространство. Согласно Pattern
Javadocs, \\s
соответствует [ \t\n\x0B\f\r]
, поэтому вам нужно явно добавить \xA0
в ваше регулярное выражение, если вы хотите сопоставить его.
При извлечении некоторого html с веб-страницы у меня есть некоторые элементы, содержащие текст, который заканчивается неизвестным или несогласованным символом пробела (т.е. не соответствует "\\ s" ):
<span>Monday </span>
В java, чтобы проверить, что это за символ, я делаю:
String s = getTheSpanContent();
char c = s.charAt(s.length() -1);
int i = (int) c;
а значение я равно: 160
Кто-нибудь знает, что это? И как я могу соответствовать этому?
Спасибо
Это неразрывное пространство. Согласно Pattern
Javadocs, \\s
соответствует [ \t\n\x0B\f\r]
, поэтому вам нужно явно добавить \xA0
в ваше регулярное выражение, если вы хотите сопоставить его.
Этот \u00A0
, также известный как неразрывное пространство. Если вы знаете HTML, вы поймете, что это то же пространство, что представлено
. По-видимому, он использовал его вместо обычного пространства.
Попробуйте использовать это для сопоставления пробелов
Character.isSpaceChar(c) || c <= ' ';
Я сделал эту таблицу один раз, чтобы показать вам некоторые из определений пробелов, используемых в Java. Это довольно увлекательно (если вы такие странные, как я).
http://spreadsheets.google.com/pub?key=pd8dAQyHbdewRsnE5x5GzKQ
Кстати, Guava CharMatcher.WHITESPACE отслеживает последний стандарт Unicode 5.x и поэтому часто является лучшим выбором, чем методы JDK.