2011-10-19 10 views
6

Estoy tratando de verificar si hay un espacio, una nueva línea o una pestaña en la ubicación actual del carácter. Los espacios funcionan, pero las pestañas y las nuevas líneas no. Imagínate, estoy usando escapes para esos, y solo un espacio regular para un espacio ... ¿Cuál es la forma correcta de encontrarlos en un lugar?Encontrar espacios, nuevas líneas y pestañas con charAt()

if(String.valueOf(txt.charAt(strt)).equals(" ") || 
        txt.charAt(strt) == '\r' || 
        txt.charAt(strt) == '\n' || 
        txt.charAt(strt) == '\t') { 
    //do stuff 
        } 
+0

¿Qué es 'txt'? y si es un 'String' ... ¿por qué estás usando' String.valueOf() '? –

+0

Brian: Sospecho que sin eso, se quejó de tipos incompatibles (y '' '' era más difícil de escribir?) – Amadan

+0

txt es un Editable – bwoogie

Respuesta

8

Esto funciona para mí:

char c = txt.charAt(strt); 
    if (c == ' ' || c == '\t' || c == '\n' || c == '\r') 
    System.out.println("Found one at " + strt); 

Suyo también funciona, aunque es un poco más difícil de seguir. Por qué no funciona para ti. No lo sé. ¿Tal vez la cuerda está mal formada? ¿Estás seguro de que en realidad tienes pestañas y cosas en él?

+0

Se ha cambiado a este método de comparación para ahorrar en costos. – bwoogie

1

Debería funcionar bien, verifique su cadena de entrada. Además, el espacio puede verificarse comparando un espacio en blanco. Crear un nuevo objeto String solo para comparar es costoso.

+0

... como está extrayendo cada char cuatro veces. – Amadan

0

En cuanto a los documentos para Editable en Android, devuelve un char. Por lo tanto ...

if (txt.charAt(strt) == ' ' || 
    txt.charAt(strt) == '\r' || 
    txt.charAt(strt) == '\n' || 
    txt.charAt(strt) == '\t') 
{ 
    //do stuff 
} 

Producirá el resultado esperado.

Cuestiones relacionadas