【发布时间】:2016-04-30 11:20:02
【问题描述】:
我的邮政编码验证器存在一些问题,它读取带有英国邮政编码的文本文件,然后在验证后返回 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();
}
}
【问题讨论】:
-
你有没有在 regex101 上检查过你的正则表达式?
-
我之前在另一个不从文本文件读取的更简单的程序中使用过正则表达式。当我添加了读取文件代码时,问题就出现了,就像我上面指定的那样,但感谢正则表达式 101 提示:)
-
你试过没有关闭 $ 吗?
-
不,但我不知道这将如何解决我的问题。似乎它无法解决我遇到的问题。
-
如果您的正则表达式之前工作并且您的循环确实读取了文件并且能够打印值,您的问题可能是由杂散空格或换行符引起的
标签: java regex stack queue postal-code