2011-10-19 13 views
6

Sto provando a verificare se c'è uno spazio, una nuova riga o una scheda nella posizione corrente del carattere. Gli spazi funzionano ma non le schede e le nuove righe. Vai a capire, sto usando le fughe per quelle e solo uno spazio regolare per uno spazio ... Qual è il modo corretto per trovarli in una posizione?Ricerca di spazi, nuove righe e schede con charAt()

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

Che cos'è 'txt'? e se è un 'String' ... perché stai usando' String.valueOf() '? –

+0

Brian: Sospetto che senza di esso si sia lamentato di tipi incompatibili (e '''' era più difficile scrivere?) – Amadan

+0

txt è un Modificabile – bwoogie

risposta

8

questo funziona per me:

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

Distinti lavora troppo, anche se è un po 'più difficile da seguire. Perché non funziona per te non lo so - forse la stringa è mal formata? Sei sicuro di avere effettivamente schede e materiale?

+0

Modificato su questo metodo di confronto per risparmiare sui costi. – bwoogie

1

Dovrebbe funzionare bene, controllare la stringa di input. Inoltre, lo spazio può essere verificato confrontando un carattere di spazio vuoto. Creare un nuovo oggetto String solo per il confronto è costoso.

+0

... come sta estraendo ogni char quattro volte. – Amadan

0

Guardando i documenti per Editable in Android, restituisce un char. Quindi ...

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

Produrrà il risultato previsto.

Problemi correlati