0

問題は、文字列内で互いに続く5桁をどのように検出するかです。エルゴは米国の郵便番号を見つけました。

補足:GWTでコードを使用したいので、正規表現とサードパーティライブラリに制限があります。それ以外の場合は、 net.sourceforge.jgeocoderを使用します。

4

7 に答える 7

4

正規表現を使用する場合、これは厳密にフォーマットされたZIPで機能するはずです:^ \ d {5}([-+]?\ d {4})?$

  • 12345
  • 123456789
  • 12345-6789
  • 12345 + 6789
  • 12345-67ND(はい、あなたはその権利を読んでいます、時には最後の2つはNDである可能性があります)

しかし、まだ問題があります。一部のアプリケーション(Microsoft Excelなど)は、5桁のZIPを整数として解釈しようとします。これは、ニューイングランドやプエルトリコのように、前にゼロがあるZIPで問題が発生することがあることを意味します。そのため、3桁および4桁の値を探すことも検討してください。

米国の「最初の」郵便番号は00501で、IRSです。(おそらく、それを検証することを許可するべきではありません!)整数として解釈すると、501になります。問題が発生しました。

mod 10チェックサムを持つクレジットカードとは異なり、アドレスは自己検証されないため、これを知っておくことが重要です。これは、何らかの外部権限がないと、アドレスが適切にフォーマットおよび標準化されているかどうかを知ることができないことを意味します。

また、外部機関を介してアドレスを標準化する必要がある場合は、アドレスを検証および確認することもできます。

私はSmartyStreetsの創設者です。私たちはあなたがプログラムであなたのアドレスを私たちに提出することができるウェブベースのアドレス検証サービスを持っています、そして私たちはそれらをクリーンアップし、それらを標準化し、そしてそれらを検証します。

于 2011-10-13T02:36:44.850 に答える
2

\\d{5}正規表現として、私は出発点になると信じています

コード:

String[] tokens = string.split("\\d{5}");  
// check token length.

私の携帯電話から行われたので、スペルと構文を許してください

于 2011-08-05T13:26:34.183 に答える
1

私のために働いたのは:

(\d{5}(?=\s|$))|(\d{5}-\d{4}(?=\s|$))
于 2017-05-25T08:30:57.963 に答える
0

正規表現で表現するのは非常に簡単です: "^ \ d {5}"

Javaで正規表現マッピングを実装する方法をご覧ください:http://www.regular-expressions.info/java.html

于 2011-08-05T13:27:12.400 に答える
0

正規表現付き。

\d{5}

zipはアドレスの末尾にある必要があるため

\d{5}$
于 2011-08-05T13:28:13.523 に答える
0

米国の郵便番号には、5桁の数字(郵便番号と呼ばれる)と9桁の数字(郵便番号+4と呼ばれる)の2つの形式があります。有効な米国の郵便番号を解析するためのアルゴリズムは次のとおりです。仮定:開始点は、郵便番号(またはzip + 4)候補を含む文字列です。

  1. 入力文字列を繰り返し処理し、すべての数字を抽出して、「zipString」と呼ぶ2番目の文字列にします。注:zip+4は「12345-1234」と書かれることがよくあります。これにより、ダッシュが削除されます。入力文字列が「1a2b3c4d-------5x」の場合にも機能するため、これは目的に応じて過度に受け入れられる可能性があります。この緩みは、単純で無視できる入力エラー(郵便番号としての「12345」など)を無視するため、一般的には問題ありません。
  2. 「zipString」の長さが5文字の場合、それが郵便番号です。
  3. 「zipString」の長さが9文字の場合、最初の5文字は郵便番号であり、最後の4文字は郵便番号の+4部分+4です。
  4. 「zipString」の長さが5文字でも9文字でもない場合、入力は無効です。

5桁のみのzip用に変更:

  1. 入力文字列を繰り返し処理し、すべての数字を抽出して、「zipString」と呼ぶ2番目の文字列にします。単純で無視できる入力エラー(郵便番号としての「12345」など)を無視するため、正規表現よりもこれを好みます。
  2. 「zipString」の長さが5文字の場合、それが郵便番号です。
  3. 「zipString」の長さが5文字でない場合、入力は無効です。
于 2011-08-05T13:38:41.160 に答える
0

これが、住所文字列から郵便番号を解析し、それを郵便番号の配列と比較するために行ったことです。住所文字列の形式は次のとおりです。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;
}
于 2017-10-09T17:43:27.377 に答える