2013-07-25 16 views
6

Próbowałem ten fragment, ale to nie działaSprawdź wprowadzona wartość jest liczbą lub nie

try 
    { 
    Integer.parseInt(enteredID.getText().toString()); 
    Log.i("enteredID value", "enterdID is numeric!!!!!!!!!!!^^^"); 
    flag=1; 
} catch (NumberFormatException e) { 
    flag=-1; 
    Log.i("enteredID value", "enterdID isn't numeric!!!!!!!!!!!^^^"); 
} 

dbać, że może przyjąć albo nazwę użytkownika lub identyfikator sprawdzić wartość, nie mam chcę, żeby akceptowała tylko liczby !!

Odpowiedz

6

zestaw EditText proprerty InputType = liczba będzie zawsze brać numery jako wejście

android:inputType="number" 
+0

thnx, ale napisałem notatkę, że chcę użytkownikowi wprowadzić zarówno liczby i znaków, dla każdego innego kawałka kod wykonywany –

0

Może coś takiego:

String text = enteredID.getText().toString(); 

    if(text.matches("\\w+")){ 
     //--words-- 
    }else if (text.matches("\\d+")){ 
     //--numeric-- 
    }else { 
     //-- something else -- 
    } 

można zmienić wyrażenie regularne pasujące do skomplikowanych formatów.

5

spróbować z tego wyrażenia regularnego:

String regex = "-?\\d+(\\.\\d+)?"; 

if (enteredID.getText().toString().matches(regex)) { 
    Log.i("enteredID value", "enterdID is numeric!!!!!!!!!!!^^^"); 
    flag=1; 
} else { 
    flag=-1; 
    Log.i("enteredID value", "enterdID isn't numeric!!!!!!!!!!!^^^"); 
} 
11

Użycie tego wyrażenia dla numeru validate tylko

String regexStr = "^[0-9]*$"; 

if(et_number.getText().toString().trim().matches(regexStr)) 
{ 
    //write code here for success 
} 
else{ 
    // write code for failure 
} 
+0

Works excellent.Thanks. –

+0

To działa dla mnie, oprócz tego, że staram się zezwalać również na dziesiętne, a gdy kopiuję numer taki jak 33.8, nie powiedzie się ... w jaki sposób zaktualizować regexStr, aby umożliwić także separator dziesiętny? –

+0

musisz zastąpić ten ciąg "^ [0-9] * $" za pomocą "^ [1-9] \ d * (\. \ D +)? $" –

0
Pattern ptrn = Pattern.compile(regexStr); 

if (!ptrn.matcher(et_number.getText().toString().trim()).matches()) { 

    //write code here for success 

}else{ 

    //write code here for success 

} 
5

Jeżeli wartość logiczna prawda, to jest liczba inaczej wartość ciągu

boolean digitsOnly = TextUtils.isDigitsOnly(editText.getText()); 

lub f lub Przykład

String text = edt_email.getText().toString(); 
      boolean digitsOnly = TextUtils.isDigitsOnly(text); 
      if (digitsOnly) { 
       if (text.length() == 0) { 
        Toast.makeText(getApplicationContext(), "field can't be empty.", Toast.LENGTH_LONG).show(); 
       } else { 
        Toast.makeText(getApplicationContext(), "field is int value", Toast.LENGTH_LONG).show(); 
       } 
      }else { 
        Toast.makeText(getApplicationContext(), "Field is string value", Toast.LENGTH_LONG).show(); 
       } 
      } 
1

Zastosowanie TextUtils klasy funkcji dla tego

TextUtils.isDigitsOnly("gifg"); 

to zwróci true, jeśli tylko cyfry są tam i false jeśli postać istnieje wewnątrz łańcucha

0
String text = editText123.getText().toString(); 
try { 
    int num = Integer.parseInt(text); 
    Log.i("",num+" is a number"); 
} catch (NumberFormatException e) { 
    Log.i("",text+" is not a number"); 
} 
0

użyć tej metody

boolean isNumber(String string) { 
try { 
    int amount = Integer.parseInt(string); 
    return true; 
} catch (Exception e) { 
    return false; 
} 

}

tak:

if (isNumber(input)) { 
    // string is int 
} 
Powiązane problemy