영국 우편 번호 검사기를 미국 우편 번호 검사기로 바꾸는 방법이 궁금합니다. 현재 내 프로그램은 텍스트 파일에서 우편 번호를 읽고 유효한 영국 우편 번호인지 확인합니다. 이것은 잘 작동하지만 영국 포스트 코드 대신 미국 포스트 코드를 읽은 다음 유효성을 검사하고 싶습니다. 아래는 현재 사용중인 프로그램입니다.자바 - 영국 우편 번호 검사기에서 미국 우편 번호 검사기
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", "35,005", "AL", "ADAMSVILLE"86.959727,33.588437 포함했다 10616,0.002627
"05", "72001", "AR", "ADONA"92.903325,35.0469564940.00021
"06", "90804", "CA", "SIGNAL HILL" , 118.155187,33.782993,36092,0.001213
감사합니다. d. 질문이 있으시면 언제든지 문의하십시오.
당신은 영국의 하나가 아니라 미국 우편 형식에 맞게 정규식 체크를 수정해야합니다. 몇 가지 예를 들어 미국 형식을 게시하면 올바른 정규식을 쉽게 찾을 수 있습니다. – Dave
예, Dave가 말했듯이 예제가 필요합니다. 우편 번호가 5 자리 숫자 인 경우 확장 사물이 포함 된 경우와 다릅니다. – Laurel
나는 내가 읽고있는 것에 대한 몇 가지 예를 게시했다. 그래서 나는 그것이 5 개의 숫자를 가지고 있고 처음 두 개의 숫자를 읽는다는 것을 읽고 싶다. 그래서이 "01", "35006", "AL"처럼. 10,000 개의 항목이 있기 때문에 그 부분을 읽고 검증해야합니다. – danbb