我正在创建一个用于计算游戏中积分的应用。这个应用程序有一个edittext组件。我想检查从编辑文本中检索的字符串是否包含0-9以外的字符。这是因为我的应用程序包含一个integer.parse函数,如果输入0-9以外的字符,则会崩溃。所有帮助将不胜感激。提前谢谢。
答案 0 :(得分:3)
如果您只想通知用户无效字符,那么您可以将其包装在try/catch
中并采取相应措施
try
{
int someInt = Integer.parseInt(et.getText().toString());
// other code
}
catch (NumberFormatException e)
{
// notify user with Toast, alert, etc...
}
您还可以使用regular expression根据需要查找您想要/不想要的角色。
为了清楚,如果我的代码注释不是,我建议您对异常执行某些操作并通知用户。不要抓住它并让它坐下来
答案 1 :(得分:2)
public static boolean isNumeric(String str)
{
for (char c : str.toCharArray())
{
if (!Character.isDigit(c)) return false;
}
return true;
}
OR
public boolean isNumeric(String s) {
return s.matches("[-+]?\\d*\\.?\\d+");
}
答案 2 :(得分:0)
首先,您可以将edittext设置为整数,因此在布局中
android:inputType="number"
仅在编辑文本中设置为整数。
此处所有可能的类型: http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
然后,您可以使用正则表达式进行测试或/并在解析时捕获异常。 正则表达式为:
"string".matches("\\d+") // true when numbers only, false otherwise
参考此处:
http://developer.android.com/reference/java/lang/String.html#matches(java.lang.String) http://developer.android.com/reference/java/util/regex/Pattern.html