如何检查字符串输入的格式

亨特斯托克迪尔

我不确定我是否在错误的区域进行检查,或者我要检查的代码是否错误。我正在尝试检查员工 ID 是否以 999-A 格式有效。任何帮助,将不胜感激。

    public class Employee {
  private String name;
  private String employeeNumber;
  private String hireDate;

  // Constructor
  public Employee(String name, String employeeNumber, String hireDate){

    this.name = name;

    if(isValidEmployeeNumber(employeeNumber) == true){
      this.employeeNumber = employeeNumber;
    } else{

    }
    this.hireDate = hireDate;

  }

  // Getters and Setters

  public String getName(){
    return name;
  }

  public String getEmployeeNumber(){
    return employeeNumber;
  }

  public String getHireDate(){
    return hireDate;
  }

  public void setName(String name){
    this.name = name;
  }

  public void setEmployeeNumber(String employeeNumber){
    this.employeeNumber = employeeNumber;
  }

  public void setHireDate(String hireDate){
    this.hireDate = hireDate;
  }

  //999-X
  private boolean isValidEmployeeNumber(String employeeNumber){

    if(Character.getNumericValue(employeeNumber.charAt(4)) > 10 &
        Character.getNumericValue(employeeNumber.charAt(4)) < 22)
    {
      /*
      int cutNum = Integer.parseInt(employeeNumber.substring(0,1));

      if(cutNum <= 0 && cutNum <= 9){

        cutNum = Integer.parseInt(employeeNumber.substring(1, 2));

        if(cutNum <= 0 && cutNum <= 9){
          cutNum = Integer.parseInt(employeeNumber.substring(2, 3));

          if(cutNum <= 0 && cutNum <= 9){

              setEmployeeNumber(employeeNumber);
              return true;

          }

        }

      }*/

      return true;

    }

    return false;
  }

}

正如您所看到的,我注释掉了我尝试过的部分,即使注释掉了 employeeNumber 的结果为 null。我尝试过 string.matches("\d{1}\d{1}\d{1}\-\D{1}") 和其他一些策略。

beny23

正则表达式非常适合此任务:

private boolean isValidEmployeeNumber(String employeeNumber) {
    return employeeNumber.matches("[0-9]{3}-[A-Z]")
}

分解正则表达式:

  • [0-9]{3} 一个数 (0-9) 3 次
  • - 破折号
  • [A-Z] AZ一次

其他任何东西都无效。Note\D对于任何非数字都有效,我认为这不是您的意图。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章