Java检查字符串输入

时间:2016-09-25 08:47:43

标签: java

我正在尝试检查输入字符串: - 长度 - 类型 - 最后的特殊字符

输入是这样的身份证24659213Q。

所以我现在得到的是:

    public void datosUsuario() {
    System.out.print("Write ID: ");
    input = scanner.nextLine();
}


//ID check
public void comprobacion() {
    System.out.println("Checking ID length...");
    if (input.length() == 9){
        status = true;
        System.out.println("Length: OK!");
    } else {
        System.out.println("Length not OK! Try again!\n");
        status = false;
    }
}

所以我检查整个字符串是否有8 + 1长度,现在我在检查它是否有8位数字和输入末尾的字符时遇到问题。

任何想法都会被贬低!谢谢!

5 个答案:

答案 0 :(得分:3)

我会使用正则表达式:

String input = scanner.nextLine();
input.matches("/^[0-9]{8}[A-Za-z]$/);

请参阅String.matchesregular expression文档。

答案 1 :(得分:1)

一个简单的方法是:

//ID check
public void comprobacion() {
System.out.println("Checking ID length...");
if (input.length() == 9) {
    if (Character.isAlphabetic(input.charAt(8)) {
        status = true;
        System.out.println("OK!");
    } else {
        status = false;
        System.out.println("Length: OK, but last character must be alphabetic");
    }
} else {
    System.out.println("Length not OK! Try again!\n");
    status = false;
}

答案 2 :(得分:1)

您可以使用reg ex,

  public static void comprobacion(String input) {
    status = false;
    if(input.matches("\\d{8}\\w{1}"))
    {
      status = true;
    }

  }

这里,\ d {8} =八位数 \ w {1} =一个字母字符

答案 3 :(得分:0)

您可以使用“Character.isDigit()”来确定某个字符是否为数字。换句话说,您可以创建一个for循环来遍历每个字符,检查它是否是一个数字。这是一个例子:

String input = "24659213Q";
for(int c = 0; c < input.length()-1; c++){
    //Checks all but the last character
    if( !Character.isDigit( input.charAt(c) ) ){
        System.out.println("The String does not start with 8 digits");
    }
}
if( Character.isDigit( input.charAt(8) ) ){
    //Checks only last character
    System.out.println("The String does not end with a char");
}

答案 4 :(得分:0)

如上所述,也可以遵循正则表达的方法。还有一种方法可以做到。

1)将字符串分成两个字符,分别为8个字符,另一个字符串为最后一个字符。

2)解析第一个String 捕获NUmberFormatException的try catch块中的Integer.parseInt(subStringOfFirst8Char)。

如果你没有发现异常,那么它就是错误的。