我必须对一个看起来像这样的字符串进行标记:
4830673048;Tony White
必须有两个由 a 分隔的标记;
第一个标记必须包含 10 位数字,并且只有数字
第二个标记可能不包含数字。
private static boolean isValid(String accountLine) throws BankAccountException
{
StringTokenizer strTok = new StringTokenizer(accountLine, ";");
boolean valid = true;
if(strTok.countTokens() == 2)
{
if(strTok.nextToken().length() == 10 && strTok.nextToken().matches(".*[0-9].*"))
{
if(!strTok.nextToken().matches(".*[0-9].*"))
{
valid = true;
}
}
}
else
{
System.out.println("Invalid Bank Account info. " + strTok.nextToken());
valid = false;
}
return valid;
}
这是我想出的代码,但它并没有达到我的预期。我知道问题可能在于我使用.nextToken()
. 那么我的问题是,仅检查第一个或第二个令牌的正确 StringTokenizer 方法是什么?