Java - 验证主题代码

时间:2014-05-18 00:20:32

标签: java validation

我有一个主题代码,例如:ABC123是string

我需要确保长度为6,前3个字母为字母,后3个为数字。

我想尝试在if声明中完成所有操作?我可以工作的长度,但无法弄清楚数字和字母的一部分。 e.g:

public void isValidCode(String subjectCode2){
    str = subjectCode2;
    if (str.length() == 6 && """"NEED TO TEST OTHERS HERE??""" ) {
        System.out.println("The code is valid");
    }
    else {
        System.out.println("The code is not valid");
    }

4 个答案:

答案 0 :(得分:8)

您始终可以使用正则表达式和matches()类的String方法。

if (str.matches("[a-zA-Z]{3}[0-9]{3}")) {
    // Validation succeeded
}
else {
    // Validation failed
}

答案 1 :(得分:2)

要测试前三个字母是否为字母,您可以使用循环。同样,使用循环测试最后三位数是否为数字。您可能会发现Character类中的函数很有用。

答案 2 :(得分:1)

我会改变方法签名,使它不是一个void方法,而是声明返回一个布尔值。那么你可以有几个if语句,如果false返回false。在底部,如果通过所有测试,则返回true。

public boolean isValidCode(String code) {
  if (code.length() != 6) {
     return false;
  }
  // here check if first 3 chars are letters
  // here check if last 3 chars are numbers

  return true;
}

然后,如果需要,调用代码可以执行println。

String test = "ABC123";
if (isValidCode(test)) {
  System.out.println("The code is valid");
} else {
  System.out.println("The code is not valid");
}

答案 3 :(得分:0)

如果用#34;字母",你的意思是用英文以外的字母包含字母,你就需要这个。

if (str.matches("\\p{L}{3}\\d{3}")) {

此处,\p{L}匹配Unicode认为是任何语言的字母的任何字符。