2009-11-09 8 views
15

Na wydobywania jakiś html ze strony internetowej, mam pewne elementy zawierające tekst, które kończą się w nieznanym lub niedopasowanych spacją (czyli nie pasuje „\\ s”):Niezidentyfikowane biały znak w Javie

<span>Monday </span> 

w Javie, aby sprawdzić, co to jest znak, robie:

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

i wartość i wynosi: 160

Każdy wie, co to jest? I jak mogę do tego dopasować?

Dzięki

+0

Dopasuj jak? Czy potrzebujesz wyrażeń regularnych lub czy użyjesz innej metody. Ponadto, co próbujesz osiągnąć, dopasowując go? Możemy dać lepsze odpowiedzi z większą ilością informacji. –

Odpowiedz

20

To jest non-breaking space. Zgodnie z Pattern Javadocs, \\s pasuje [ \t\n\x0B\f\r], więc musisz wyraźnie dodać \xA0 do swojego regex, jeśli chcesz go dopasować.

+0

ok, dziękuję - to wiąże się ze źródłem html. Poniższe rozwiązanie Joela również działa. –

+3

, więc mój regex dla dopasowania wszystkich białych spacji. brak łamania to: "[\\ s \\ xA0] +" - wydaje się działać. okrzyki za pomoc. –

4

to \u00A0, znany również jako non-breaking space. Jeśli znasz HTML, zrozumiesz, że jest to ta sama przestrzeń, którą reprezentuje &nbsp;. Najwyraźniej używa się go zamiast normalnej przestrzeni.

+0

OK, to ma sens. Widzę w źródle   - ale mój parser konwertował go na tę postać, która nie pasowała do \\ s. Pozdrawiam –

+0

Z twojego pytania nie wynikało, że szukałeś wzorca regex pasującego do konkretnej postaci. W każdym razie, dobrze jest wiedzieć, że liczba dziesiętna 160 równa się heksadecymalnie A0, więc przecież wiesz, który kod heksadecymalny należy użyć w tabelach regex i unicode :) – BalusC

4

Spróbuj użyć tego, aby dopasować odstępy

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