私はこのスニペットを試しましたが、機能しません
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!!!!!!!!!!!^^^");
}
値をチェックするためにユーザー名またはIDのいずれかを受け入れることができるように注意してください。数字だけを受け入れたくないです!!
この式は検証番号のみに使用します
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プロパティを設定しますinputType = 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を返します。
この方法を使用
boolean isNumber(String string) {
try {
int amount = Integer.parseInt(string);
return true;
} catch (Exception e) {
return false;
}
}
このような :
if (isNumber(input)) {
// string is int
}
この関数を使用して、小数点以下2桁の3桁の整数値と浮動小数点値をチェックします。桁数を制限したくない場合は、正規表現から{x、x}を削除してください。
private boolean isNumeric(String string) {
if(Pattern.matches("\\d{1,3}((\\.\\d{1,2})?)", string))
return true;
else
return 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 --
}
複雑な形式に一致するように正規表現を変更できます。
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");
}
アクティビティに単純にAndroid:inputType = "number"内に追加します
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
}