問題は、文字列内で互いに続く5桁をどのように検出するかです。エルゴは米国の郵便番号を見つけました。
補足:GWTでコードを使用したいので、正規表現とサードパーティライブラリに制限があります。それ以外の場合は、 net.sourceforge.jgeocoderを使用します。
補足:GWTでコードを使用したいので、正規表現とサードパーティライブラリに制限があります。それ以外の場合は、 net.sourceforge.jgeocoderを使用します。
正規表現を使用する場合、これは厳密にフォーマットされたZIPで機能するはずです:^ \ d {5}([-+]?\ d {4})?$
しかし、まだ問題があります。一部のアプリケーション(Microsoft Excelなど)は、5桁のZIPを整数として解釈しようとします。これは、ニューイングランドやプエルトリコのように、前にゼロがあるZIPで問題が発生することがあることを意味します。そのため、3桁および4桁の値を探すことも検討してください。
米国の「最初の」郵便番号は00501で、IRSです。(おそらく、それを検証することを許可するべきではありません!)整数として解釈すると、501になります。問題が発生しました。
mod 10チェックサムを持つクレジットカードとは異なり、アドレスは自己検証されないため、これを知っておくことが重要です。これは、何らかの外部権限がないと、アドレスが適切にフォーマットおよび標準化されているかどうかを知ることができないことを意味します。
また、外部機関を介してアドレスを標準化する必要がある場合は、アドレスを検証および確認することもできます。
私はSmartyStreetsの創設者です。私たちはあなたがプログラムであなたのアドレスを私たちに提出することができるウェブベースのアドレス検証サービスを持っています、そして私たちはそれらをクリーンアップし、それらを標準化し、そしてそれらを検証します。
\\d{5}正規表現として、私は出発点になると信じています
コード:
String[] tokens = string.split("\\d{5}");
// check token length.
私の携帯電話から行われたので、スペルと構文を許してください
私のために働いたのは:
(\d{5}(?=\s|$))|(\d{5}-\d{4}(?=\s|$))
正規表現で表現するのは非常に簡単です: "^ \ d {5}"
Javaで正規表現マッピングを実装する方法をご覧ください:http://www.regular-expressions.info/java.html
正規表現付き。
\d{5}
zipはアドレスの末尾にある必要があるため
\d{5}$
米国の郵便番号には、5桁の数字(郵便番号と呼ばれる)と9桁の数字(郵便番号+4と呼ばれる)の2つの形式があります。有効な米国の郵便番号を解析するためのアルゴリズムは次のとおりです。仮定:開始点は、郵便番号(またはzip + 4)候補を含む文字列です。
5桁のみのzip用に変更:
これが、住所文字列から郵便番号を解析し、それを郵便番号の配列と比較するために行ったことです。住所文字列の形式は次のとおりです。1234EasySt、City、State 55555、USA。また、zip55555-5555も処理します
private static final Pattern pattern = Pattern.compile("\\d{5}(?:[-\\s]\\d{4})?");
private static int []zipcodes = {<your array of zips>};
public static boolean isInServiceArea(String address) {
Matcher matcher = pattern.matcher(address);
int zipcode = 0;
if (matcher.find()) {
zipcode = Integer.parseInt(matcher.group(0));
Log.d(TAG, "zipcode: " + zipcode);
}
for (int code : zipcodes) {
if (code == zipcode) {
return true;
}
}
return false;
}