2011-10-19 12 views
6

Próbuję sprawdzić, czy istnieje spacja, znak nowej linii lub tabulator w bieżącej lokalizacji znaku. Spacje działają, ale tabulacje i znaki nowej linii nie. Idź, używam dla nich ucieczek i zwykłej przestrzeni na przestrzeń ... Jaki jest właściwy sposób na znalezienie ich w danej lokalizacji?Znaleźć spacje, znaki nowej linii i tabulatory z charAt()

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

Co to jest "txt"? a jeśli jest to 'String' ... dlaczego używasz' String.valueOf() '? –

+0

Brian: Podejrzewam, że bez tego jest równa się narzekanie na niekompatybilne typy (i '' '' było trudniejsze do wpisania?) – Amadan

+0

txt jest edytowalny – bwoogie

Odpowiedz

8

Działa to dla mnie:

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

Pozdrawiam też działa, choć jest to trochę trudniejsze do naśladowania. Dlaczego to nie działa, nie wiem - może sznur jest źle uformowany? Czy na pewno masz karty i inne rzeczy?

+0

Zmieniono tę metodę porównywania, aby zaoszczędzić na kosztach. – bwoogie

1

To powinno działać dobrze, sprawdź swój ciąg wejściowy. Można również sprawdzić spację, porównując znak spacji. Utworzenie nowego obiektu typu String w celu porównania jest kosztowne.

+0

... jak wyodrębnia cztery znaki cztery razy. – Amadan

0

Patrząc na dokumenty dla Editable w Androidzie, zwraca ona char. Dlatego ...

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

Spowoduje oczekiwany wynik.

Powiązane problemy