Java - Zip Code Validator не работает?
У меня есть несколько проблем с моим валидатором почтового индекса, который читает текстовый файл с британскими почтовыми индексами, а затем возвращает значение true или false после проверки.
Ниже приведен раздел кода, в котором у меня есть проблемы, в частности (ZipCodeValidator), который является открытым и должен быть объявлен в файле с именем ZipCodeValidator.java. И затем (Zip), который не может найти символ.
public class ZipCodeValidator {
private static String regex = "^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}$";
private static Pattern pattern = Pattern.compile(regex);
public boolean isValid(String zipCode) {
Matcher matcher = pattern.matcher(zip);
return matcher.matches();
}
}
А ниже здесь вся программа для справки. Любая помощь приветствуется.
package postcodesort;
import java.util.*;
import java.util.Random;
import java.util.Queue;
import java.util.TreeSet;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.StringTokenizer;
import java.util.zip.ZipFile;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PostCodeSort
{
Queue<String> postcodeStack = new LinkedList<String>();
public static void main(String[] args) throws IOException
{
FileReader fileReader = null;
ZipCodeValidator zipCodeValidator = new ZipCodeValidator();
// Create the FileReader object
try {
fileReader = new FileReader("postcodes1.txt");
BufferedReader br = new BufferedReader(fileReader);
String str;
while((str = br.readLine()) != null)
{
if(zipCodeValidator.isValid(str)){
System.out.println(str + " is valid");
}
else{
System.out.println(str + " is not valid");
}
}
}
catch (IOException ex)
{
// handle exception;
}
finally
{
fileReader.close();
}
}
}
public class ZipCodeValidator {
private static String regex = "^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}$";
private static Pattern pattern = Pattern.compile(regex);
public boolean isValid(String zipCode) {
Matcher matcher = pattern.matcher(zip);
return matcher.matches();
}
}
1 ответ
Возможно, проблема копирования + вставки, но Matcher matcher = pattern.matcher(zip);
не соответствует параметру метода zipCode
, У тебя есть zip
определены где-то еще, и, возможно, проверка на это?
Это когда я добавил код чтения файла, когда возникли проблемы, подобные тем, которые я указал выше
Убедитесь, что вы очистили строку перед ее передачей. Для удаления любых начальных или конечных пробельных символов используйте
if(zipCodeValidator.isValid(str.strip())){
наконец, ваше регулярное выражение соответствует только верхнему регистру. Убедитесь, что вы разрешаете все случаи, используя
str.strip().toUpperCase()
или смена вашего регулярного выражения:
private static Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);