我有一个问题,我使用joptionpane来获取用户的邮政编码。我试图检查格式是否在L#L#L#L中,其中L是一个字母而#是一个数字。我试图提供错误检查以查看邮政编码是否采用该格式。如果我找到一个不存在的字符串,即string.charAt(5)但我不知道如何修复它,我会不断出错。
这是我在
发生错误的当前代码String postalCode = JOptionPane.showInputDialog("Enter customer(s) " + (count + 1) + " postal code");
if (Character.isLetter(postalCode.charAt(0)) &&
Character.isDigit(postalCode.charAt(1)) &&
Character.isLetter(postalCode.charAt(2)) &&
Character.isDigit(postalCode.charAt(3)) &&
Character.isLetter(postalCode.charAt(4)) &&
Character.isDigit(postalCode.charAt(5))) {
}
else {
}
答案 0 :(得分:4)
有几种解决方案。一种方法是首先验证输入的大小:
String postalCode = JOptionPane.showInputDialog("Enter customer(s) " + (count + 1) + " postal code");
if ((postalCode.length() == 7) && Character.isLetter(postalCode.charAt(0)) && Character.isDigit(postalCode.charAt(1)) && Character.isLetter(postalCode.charAt(2)) && Character.isDigit(postalCode.charAt(3)) && Character.isLetter(postalCode.charAt(4)) && Character.isDigit(postalCode.charAt(5))) {
} else {
}
另一种方法是使用正则表达式:
import java.util.regex.Pattern;
...
String postalCode = JOptionPane.showInputDialog("Enter customer(s) " + (count + 1) + " postal code");
if (Pattern.matches("^[a-zA-Z]\\d[a-zA-Z]\\d[a-zA-Z]\\d[a-zA-Z]$", postalCode)) {
} else {
}
编辑:请参阅下面的deanosaur评论,以获得更简洁的正则表达式。