J'ai essayé cet extrait, mais cela ne fonctionne pas
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!!!!!!!!!!!^^^");
}
veillez à ce qu'il puisse accepter le nom d'utilisateur ou l'identifiant pour vérifier la valeur, je ne veux pas qu'il accepte uniquement les chiffres !!
Utilisez cette expression pour valider le numéro uniquement
String regexStr = "^[0-9]*$";
if(et_number.getText().toString().trim().matches(regexStr))
{
//write code here for success
}
else{
// write code for failure
}
Si la valeur booléenne est true, il s'agit d'un nombre sinon de la valeur de chaîne
boolean digitsOnly = TextUtils.isDigitsOnly(editText.getText());
ou par exemple
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();
}
}
set EditText propriété inputType = nombre il prendra toujours des nombres en entrée
Android:inputType="number"
Essayez avec cette expression régulière:
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!!!!!!!!!!!^^^");
}
Utilisez la fonction TextUtils
pour cette fonction
TextUtils.isDigitsOnly("gifg");
il retournera true s'il n'y a que des chiffres et false si un caractère existe dans la chaîne
Vous ne devriez jamais utiliser une exception de cette manière. Lorsque vous vous attendez à ce qu'une exception soit levée de cette manière, vous devez trouver un autre moyen de la gérer.
Essayez d’utiliser: http://developer.Android.com/reference/Android/widget/TextView.html#setRawInputType%28int%29
Quelque chose comme ça devrait le faire:
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);
Peut-être quelque chose comme ça:
String text = enteredID.getText().toString();
if(text.matches("\\w+")){
//--words--
}else if (text.matches("\\d+")){
//--numeric--
}else {
//-- something else --
}
Vous pouvez modifier l'expression régulière pour qu'elle corresponde à des formats complexes.
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");
}
utiliser cette méthode
boolean isNumber(String string) {
try {
int amount = Integer.parseInt(string);
return true;
} catch (Exception e) {
return false;
}
}
comme ça :
if (isNumber(input)) {
// string is int
}
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
}