gpt4 book ai didi

Java - 英国邮政编码 validator 到美国邮政编码 validator

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:49 24 4
gpt4 key购买 nike

我想知道如何将我的英国邮政编码 validator 变成美国邮政编码 validator 。目前,我的程序从文本文件中读取邮政编码并验证它们是否是有效的英国邮政编码。这很好用,但我也想阅读美国邮政编码而不是英国邮政编码,然后验证它们。以下是我当前的程序。

package postcodesort;

import java.util.*;
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.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("usvalidcodes.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();
}

}
}

这是通过正则表达式进行验证的代码部分。

package postcodesort;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
*
* @author ec1312017
*/
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, Pattern.CASE_INSENSITIVE);

public boolean isValid(String zipCode) {
Matcher matcher = pattern.matcher(zipCode);
return matcher.matches();
}
}

我还在要读入的文本文件中包含了一小部分数据。

"01","35005","AL","亚当斯维尔",86.959727,33.588437,10616,0.002627

"05","72001","AR","ADONA",92.903325,35.046956,494,0.00021

"06","90804","CA","信号山",118.155187,33.782993,36092,0.001213

感谢您的帮助,如有任何问题,请随时提出。

最佳答案

一个简单的解决方案是更改正则表达式。这个问题regex for zip-code建议正则表达式应为 ^\d{5}(?:[-\s]\d{4})?$

所以类看起来像这样:

public class ZipCodeValidator {

private static String regex = "^\d{5}(?:[-\s]\d{4})?$";
private static Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);


public boolean isValid(String zipCode) {
Matcher matcher = pattern.matcher(zipCode);
return matcher.matches();
}
}

这不会根据您提供的 zipcoes 列表进行验证,但实现起来要简单得多:)

关于Java - 英国邮政编码 validator 到美国邮政编码 validator ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37663138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com