在插入数据库之前,请检查文本是否为3个大写字母后接5个数字



在将用户输入插入数据库之前,我需要根据描述的模式检查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一样,其他人会用更好的模式回答;)

但你明白了。。。

干杯

附言:对不起,当我按下帖子时,我已经筋疲力尽了。。。

相关内容

最新更新