在将用户输入插入数据库之前,我需要根据描述的模式检查EditText中的用户输入。如果不匹配,我想为用户弹出一条错误消息。有没有比这更简单的方法:
public boolean myCheckMethod()
{
String s = myEditText.getText.toString();
if(s.length!=8)
return false;
for(int i=0; i < 8; i++){
if(i < 3)
if(!(Character.isLetter(s.charAt(i)) && Character.isUpperCase(s.charAt(i)))
return false;
if(i > 3)
if(!Character.isDigit(s.charAt(i)))
return false;
}
return true;
}
必须有更好的方法来做到这一点!!
有:
if(s.matches("[A-Z]{3}[0-9]{5}"))
return true;
return false;
然后在添加到数据库时,在if语句中使用该方法:
if(myCheckMethod())
{
//code to add to db here
}
else
Toast
.makeText(this, "User error",Toast.LENGTH_LONG)
.show();
您的方法并非没有道理。您也可以使用正则表达式进行测试。也许是类似[A-Z]{3}[0-9]{5}
的东西。不过,在非英语语言中,不寻常的字符可能会出现问题。不确定这对你的情况是否重要。
REGEX就是一条路。看看这个答案。不完全是你的情况,但很好的解释。
这将有助于
[A-Z]{3}[0-9]{4}是一种可能的模式,但与所有regex一样,其他人会用更好的模式回答;)
但你明白了。。。
干杯
附言:对不起,当我按下帖子时,我已经筋疲力尽了。。。