Java检查字符串输入

Java检查字符串输入,java,Java,我正在尝试检查输入字符串: -长度 -类型 -末尾的特殊字符 输入是一张像这样的身份证24659213Q 所以我现在得到的是: public void datosUsuario() { System.out.print("Write ID: "); input = scanner.nextLine(); } //ID check public void comprobacion() { System.out.println("Checking ID lengt

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

输入是一张像这样的身份证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位数字和一个字符时遇到了问题


任何想法都将受到赞赏!谢谢大家!

我会使用正则表达式:

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

请参阅和文档。

我将使用正则表达式:

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

请参阅和文档。

一个简单的方法是:

//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;
}

一个简单的方法是:

//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;
}
可以使用“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");
}
String input=“24659213Q”;
对于(int c=0;c
您可以使用“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");
}
String input=“24659213Q”;
对于(int c=0;c
您可以使用reg-ex

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

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

您可以使用reg ex

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

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

正则表达式的方法也可以如上所述。还有一种方法可以做到这一点

1) 将字符串拆分为两个-一个包含8个字符,另一个包含最后一个字符

2) 解析第一个字符串 try-catch块中的Integer.parseInt(subStringOfFirst8Char)捕获NUmberFormatException


如果你没有捕捉到异常,那么它是正确的,否则它是错误的。

正则表达式的方法也可以遵循上面提到的方法。还有一种方法可以做到这一点

1) 将字符串拆分为两个-一个包含8个字符,另一个包含最后一个字符

2) 解析第一个字符串 try-catch块中的Integer.parseInt(subStringOfFirst8Char)捕获NUmberFormatException


如果您没有捕获到异常,那么它是正确的,否则它是错误的。

是否可以调整它,使最后一个字母与字符列表匹配,如下一个:静态最终字符[]字母={T',R',W',A',G',M',Y',F',P',D',X',B',N',J',Z',S',Q',V',H',L',C',K',E'};输入。匹配(\\D{8}[T,R,W,A,G,M,Y,F,P,D,X,B,N,J,Z,S,Q,V,H,C,K,E]{1}”)这应该是可行的。是否可以对其进行调整,使最后一个字母与下一个字符列表相匹配:静态最终字符[]字母={T',R',W',a',G',M',Y',F',P',D',X',B',N',J',Z',S',Q',V',H',L',C',K',E};输入匹配(\\D{8}[T,R,W,A,G,M,Y,F,P,D,X,B,N,J,Z,S,Q,V,H,L,C,K,E]{1}”)这应该可以用。它是否可以被调整以使最后一个字母与下一个字符列表一样匹配:
静态最终字符[]字母={T',R',W',A',G',M',Y',F',P',D',X',B',N',J',S',Q',V',H',L',C',K',E};
当然可以。将
[A-Za-z]
更改为
[TRWAGMYFPDXBNJZSQVHLCKE]
,然后读取正则表达式字符类。这样可以工作,但它要求我从java文件开头定义的静态常量中检查它。这样做是否可行?
输入。匹配(/^[0-9]{8}+indexOf(LETTER)$/)
我建议研究动态正则表达式。示例问题:是否可以对其进行调整,使最后一个字母与下一个字符列表一样匹配:
静态最终字符[]字母={T',R',W',a',G',M',Y',F',P',d',X',B',N',J',Z',Q',V',H',L',C',K',E'};
当然。更改
[A-Za-z]
[TRWAGMYFPDXBNJZSQVHLCKE]
,并读取正则表达式字符类。这是可行的,但它要求我从java文件开头定义的静态常量中检查它。这样做是否可行?
input.matches(“/^[0-9]{8}+indexOf(LETTER)$/”)
我建议研究动态正则表达式。示例问题