Хотя вы можете решить эту проблему с помощью регулярных выражений, ее также можно решить в соответствии с выбранными вами правилами. Я написал бы два вспомогательных метода: один для проверки того, что все символы в данной подпоследовательности String
являются цифрами, а другой для проверки букв. Например,
private static boolean allDigits(String s, int start, int end) {
for (int i = start; i < end; i++) {
if (!Character.isDigit(s.charAt(i))) {
return false;
}
}
return true;
}
private static boolean allLetters(String s, int start, int end) {
for (int i = start; i < end; i++) {
if (!Character.isLetter(s.charAt(i))) {
return false;
}
}
return true;
}
Тогда checkPostcode
может делегировать этим двум методам. Например,
public static boolean checkPostcode(String postCode) {
if (postCode != null && postCode.length() == 6) {
return allDigits(postCode, 0, 4) && allLetters(postCode, 4, 6);
}
return false;
}
И если вы решите использовать регулярное выражение , скомпилируйте его с Pattern
для повышения производительности. Мол,
private static Pattern POSTCODEPATTERN = Pattern.compile("\\d{4}[A-Za-z]{2}");
public static boolean checkPostcode(String postCode) {
return postCode != null && POSTCODEPATTERN.matcher(postCode).matches();
}