Ответ 1
Используйте это выражение только для проверки числа
String regexStr = "^[0-9]*$";
if(et_number.getText().toString().trim().matches(regexStr))
{
//write code here for success
}
else{
// write code for failure
}
Я пробовал этот фрагмент, но он не работает
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!!!!!!!!!!!^^^");
}
заботиться о том, чтобы он мог принимать либо имя пользователя, либо идентификатор, чтобы проверить значение, Я не хочу, чтобы он принимал только числа!
Используйте это выражение только для проверки числа
String regexStr = "^[0-9]*$";
if(et_number.getText().toString().trim().matches(regexStr))
{
//write code here for success
}
else{
// write code for failure
}
Если логическое значение равно true, это число, в противном случае строковое значение
boolean digitsOnly = TextUtils.isDigitsOnly(editText.getText());
или для примера
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();
}
}
установить значение параметра EditText proprertyType = number, который всегда будет принимать числа в качестве входных данных
android:inputType="number"
Попробуйте с этим регулярным выражением:
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!!!!!!!!!!!^^^");
}
Используйте функцию класса TextUtils
для этого
TextUtils.isDigitsOnly("gifg");
он вернет true, если существуют только цифры и false, если какой-либо символ существует внутри строки
Вы никогда не должны использовать исключение таким образом. Когда вы ожидаете, что исключение будет выбрано так, вы должны найти альтернативный способ его обработки.
Попробуйте использовать: http://developer.android.com/reference/android/widget/TextView.html#setRawInputType%28int%29
Что-то вроде этого должно это сделать:
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);
Возможно, что-то вроде этого:
String text = enteredID.getText().toString();
if(text.matches("\\w+")){
//--words--
}else if (text.matches("\\d+")){
//--numeric--
}else {
//-- something else --
}
Вы можете изменить регулярное выражение для соответствия сложным форматам.
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
}
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");
}
использовать этот метод
boolean isNumber(String string) {
try {
int amount = Integer.parseInt(string);
return true;
} catch (Exception e) {
return false;
}
}
как это:
if (isNumber(input)) {
// string is int
}
Я использую эту функцию для проверки трехзначных значений Integer и Float с двумя позициями после десятичной точки. Если вы не хотите ограничивать количество цифр, удалите {x, x} из регулярного выражения.
private boolean isNumeric(String string) {
if(Pattern.matches("\\d{1,3}((\\.\\d{1,2})?)", string))
return true;
else
return false;
}
на активность просто добавьте внутри андроида: inputType = "number"