2009-11-09 17 views
15

sull'estrazione di alcuni HTML da una pagina web, ho alcuni elementi contenenti testo che terminano con un carattere di spaziatura sconosciuta o non-matching (ovvero non corrisponde "\\ s"):non identificato spazio bianco in Java

<span>Monday </span> 

in Java, di controllare ciò che questo personaggio è, sto facendo:

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

e il valore di i è: 160

Qualcuno sa di cosa si tratta? E come posso farcela?

Grazie

+0

Partita come? Hai bisogno della regex o hai intenzione di usare un altro metodo. Inoltre, cosa stai cercando di ottenere abbinandolo? Possiamo dare risposte migliori con più informazioni. –

risposta

20

È un non-breaking space. Secondo lo Pattern Javadocs, \\s corrisponde a [ \t\n\x0B\f\r], quindi dovrai aggiungere esplicitamente \xA0 alla tua espressione regolare se desideri abbinarlo.

+0

ok, grazie - questo si collega con il sorgente html. Anche la soluzione di Joel qui sotto funziona. –

+3

quindi il mio regex per la corrispondenza di tutti gli spazi bianchi inc. non-breaking è: "[\\ s \\ xA0] +" - sembra funzionare. evviva aiuto. –

4

Ecco \u00A0, noti anche come spazio unificatore. Se conosci l'HTML, capirai che è lo stesso spazio rappresentato da &nbsp;. Apparentemente lo si usava al posto di uno spazio normale.

+0

ok questo ha senso. Riesco a vedere nella fonte   - ma il mio parser lo stava convertendo in questo personaggio che non corrispondeva a \\ s. evviva –

+0

Non è chiaro dalla tua domanda che stavi cercando un modello regex per abbinare il particolare personaggio. Ad ogni modo, è bene sapere che il decimale 160 equivale all'esagono A0 in modo che tu sappia quale codice esadecimale usare nelle tabelle delle espressioni regolari e in codice univoco :) – BalusC

4

Provare a utilizzare questo spazio bianco per abbinare

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