首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查三个标准

检查三个标准
EN

Stack Overflow用户
提问于 2013-04-14 16:58:49
回答 3查看 99关注 0票数 1

我试图检查3的条件,以验证汽车牌照号码。但我似乎无法检查所有三个条件。长度必须在4-7之间。前3个字符必须从a开始。第四个字符必须是数字'0‘- '9’。

我的下一部分问题有问题。我需要实现计算CheckDigit方法,我已经尝试添加了一个数组来接受争论,让我一步一步地做指令来计算校验位数。

下面是步骤,

  1. 取第二和第三字符,转换为与字母表对应的数字。例如:A是1 B是2。
  2. 将0加到数字的前面是数字有较少的den 4位数。例如:SBA123需要附加到0123
  3. 将步骤1和步骤2中的每个数字乘以14,2,12,2,11,1
  4. 从步骤3算出的数字
  5. 将步骤4中的和除以19,然后取余数,然后在表中找到检查数字。

任何帮助对我来说都是很好的开始。下面是我要修改的代码,

请指出我的错误。

代码语言:javascript
复制
public static void validateCarPlate(String y)throws InvalidCarPlateException{
String rex = "[a-zA-Z]{3}[0-9]{1,4}";
if(y.matches(rex)){
    computeCheckDigit(y);
}else{
    throw new InvalidCarPlateException();
}
}
public static void computeCheckDigit(String x){
int [] arr = Integer.parseInt(x);

}
EN

回答 3

Stack Overflow用户

发布于 2013-04-14 17:07:29

在这里使用正则表达式将是理想的。正则表达式看起来很有趣,构造得很好,表示一个有限状态机,它可以识别某些类型的字符串是否匹配某个模式。学习正则表达式将极大地改进字符串匹配/验证过程。

这是您应该使用的RegEx:^[a-zA-Z]{3}[0-9]{1,4}$

让我们来分析一下这条看起来有趣的绳子意味着什么:

  • ^:这是字符串的开头(前面没有字符)
  • [a-zA-Z]:字母字符
  • {3}:这些字母中的3个
  • [0-9]:然后是数字字符
  • {1,4}:这些数字字符中的1到4个(包括)
  • $:这是字符串的结尾(没有剩余的字符)

一个示例用法:

代码语言:javascript
复制
String myStr = "abc123";
System.out.println(isValidString(myStr));

public boolean isValidString(String input) {
  String regex = "^[a-zA-Z]{3}[0-9]{1,4}$";
  if(input==null) { return false; }
  return input.trim().matches(regex);
}
票数 2
EN

Stack Overflow用户

发布于 2013-04-14 17:08:20

您可以很容易地使用regex,这个表达式

代码语言:javascript
复制
^[a-z]{3}[0-9]{1,4}$

会起作用的。

下面是一个例子

代码语言:javascript
复制
public boolean validatePlate(final String string) {
    final Matcher matcher = Pattern.compile("^[a-z]{3}[0-9]{1,4}$").matcher(string);
    return matcher.matches();
}
票数 1
EN

Stack Overflow用户

发布于 2013-04-14 17:21:08

您总是测试字符串的第一个字符(charAt(0)),而不是使用设置的循环计数器I的值。此外,您没有测试的数字。

您还可以查看"String.indexOf()";它可以省去遍历(或初始化)一个字符数组的麻烦。有一个字符串“abcdefg.”(另一个“01234.”)

您还可以查看Character.isLetter()Character.isDigit()方法,删除数组和处理字符串的类似数组。

至于正则表达式,我总是喜欢一个老笑话:“假设你有一个问题,然后你决定用正则表达式来解决它。现在你有两个问题……”当然,它们是有用的,但并没有很多人认为的那么有用。并不是所有可以用它们解决的问题都应该用它们来解决。如果您感兴趣,这是一个很好的简单正则表达式问题。如果你不是,不要觉得你的解决方案是缺乏的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16001687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档