嘿伙计们!
我有一些街道字段,通常应包含门牌号,因此我想检查该字段是否包含字符和数字(0-9)。如果两者都正确,则输入正确。顺便说一句,我不想使用正则表达式。当有人可以帮助我时,那就太棒了。我不知道如何检查它。
谢谢。
我用用户输入尝试了这个,我测试了 Railway 10
System.out.println("Street:");
strasse = input.readLine();
while(true) {
while (strasse.length() > 35) {
System.out.println("Input has a limit of 35 signs. Enter again:");
}
for (int i = 0; i < strasse.length(); i++) {
if (Character.isDigit(strasse.charAt(i))) {
checkDigit = true;
}
else if (Character.isLetter(strasse.charAt(i))) {
checkLetter = true;
}
if (checkDigit && checkLetter == true) {
break;
}
else { // <= PROBLEM. You should give a chance to test all chars from address
System.out.println("Must contain at least 1 number or character. Enter again:");
strasse = input.readLine();
}
}
}
它没有给出 checkDigit 的真实返回值。
最佳答案
如果您对街道地址格式没有任何限制,只想检查是否至少有一个字符数字和一个字母字符,则可以使用
boolean checkAddress(String address) {
boolean hasDigit = false;
boolean hasLetter = false;
for (int i = 0; i < address.length(); i++) {
if (Character.isDigit(address.charAt(i))) {
hasDigit = true;
}
else if (Character.isLetter(address.charAt(i))) {
hasLetter = true;
}
}
return hasDigit && hasLetter;
}
编辑 缺少结尾的“)”。 我测试过:
System.out.println(checkAddress("aksjdbakjs, 90.")); // => true
System.out.println(checkAddress("aksjdbakjs asd asd")); // => false
System.out.println(checkAddress("...90.;;;")); // => false
编辑2 针对所提供代码的建议解决方案
System.out.println("Street:");
strasse = input.readLine();
boolean strasseIstRecht = false;
while(!strasseIstRecht) {
if (strasse.length() > 35) {
System.out.println("Input has a limit of 35 signs. Enter again:");
}
else {
// re-initialise for each new input
boolean checkDigit = false;
boolean checkLetter = false;
for (int i = 0; i < strasse.length(); i++) {
if (Character.isDigit(strasse.charAt(i))) {
checkDigit = true;
}
else if (Character.isLetter(strasse.charAt(i))) {
checkLetter = true;
}
if (checkDigit && checkLetter) {
strasseIstRecht = true;
break; // ok address has both no need to continue the for
}
}
// Now check if we need to ask a new strasse
if (!strasseIstRecht) {
System.out.println("Must contain at least 1 number or character. Enter again:");
strasse = input.readLine();
}
}
}
您可以通过将 strasse = input.readLine();
放在 while(...)
之后并删除完成的两行来简化一点在上面的代码中。
关于java - 检查输入字段是否包含数字和字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28856842/