2009-11-09 18 views
15

en extraer algo de HTML de una página web, tengo algunos elementos que contienen texto que terminan en un carácter de espacio en blanco desconocida o no a juego (es decir, no coincide con "\\ S"):espacio en blanco no identificado en Java

<span>Monday </span> 

en java, para comprobar lo que este personaje es, que estoy haciendo:

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

y el valor de i es: 160

Alguien sabe qué es esto? ¿Y cómo puedo igualarlo?

Gracias

+0

Match para ello ¿cómo? ¿Necesita la expresión regular o iba a utilizar otro método? Además, ¿qué estás tratando de lograr igualando? Podemos dar mejores respuestas con más información. –

Respuesta

20

Es un non-breaking space. De acuerdo con Pattern Javadocs, \\s coincide con [ \t\n\x0B\f\r], por lo que tendrá que agregar explícitamente \xA0 a su expresión regular si desea que coincida.

+0

ok, gracias - esto se relaciona con la fuente html. La solución de Joel a continuación también funciona. –

+3

así que mi expresión regular para hacer coincidir todos los espacios en blanco inc. non-breaking es: "[\\ s \\ xA0] +" - parece funcionar. aplausos por ayuda. –

4

Eso es \u00A0, también conocidos como espacio de no separación. Si conoce HTML, comprenderá que es el mismo espacio representado por &nbsp;. Al parecer, uno lo estaba usando en lugar de un espacio normal.

+0

bien eso tiene sentido. Puedo ver en la fuente   - pero mi analizador lo estaba convirtiendo a este personaje que no coincidía con \\ s. cheers –

+0

No quedó claro por su pregunta que estaba buscando un patrón de expresiones regulares para que coincida con el personaje en particular. De todos modos, es bueno saber que el decimal 160 es igual al hexadecimal A0 para que, después de todo, sepas qué hexcode usar en los cuadros regex y unicode :) – BalusC

4

Intente utilizar este espacio en blanco para que coincida con

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