Java检查字符串输入
我正在尝试检查输入字符串: -长度 -类型 -末尾的特殊字符 输入是一张像这样的身份证24659213Q 所以我现在得到的是: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
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)$/”)
我建议研究动态正则表达式。示例问题