1

郵便局は実際に、住所で一般的に使用される番地の接尾辞のリストを公開しています。

http://www.usps.com/ncsc/lookups/abbr_suffix.txt

このリストを取得して、文字列を取得し、最後の単語 ("183 main strt".split[' '].last) を取得し、それが一般的に使用されるストリート サフィックスのいずれかに一致する場合 ("strt" )、公式の郵便サービス標準サフィックス (「st」) に置き換えます。

大規模な strsubsubsub よりもこれにアプローチするより良い方法はありますか?

4

4 に答える 4

6

サフィックスをハッシュに入れます。共通のサフィックスがキーで、公式のサフィックスが値です。次に、ハッシュの最後の単語を検索できます。

SUFFIXES = { "ALLEE" => "ALY", "ALLEY" => "ALY" }

addy = "183 main allee"
last = addy.split.last.upcase
addy = addy[0..-last.length-1] + SUFFIXES[last] if SUFFIXES[last]
puts addy
于 2010-06-08T04:40:51.517 に答える
1
STREET_SUFFIXES = { "ALLEE" => "ALY", "ALLEY" => "ALY" }

def fix_address(string)
  string.gsub(/[^s]+$/) { STREET_SUFFIXES[$1.upcase] || $1 }
end

puts fix_address("183 main allee")
于 2010-06-09T15:22:45.883 に答える
0

+1 CASS ベンダーを使用する場合 - 特に、実際のアドレスの標準化された結果を常に返す API を提供するベンダー。さらに、いくつかのサービスは実際に住所コンポーネントを分割して返します (Street Suffix など)。USPS のデータと規則を使用して検証されたばかりなので、接尾辞は既に USPS が推奨する形式になっています。API などにヒットするサンプル コードを次に示します。

https://github.com/smartystreets/LiveAddressSamples/blob/master/ruby/street_address.rb

このコードはSmartyStreets LiveAddress APIを呼び出します(「street_suffix」フィールドに注目してください)。私は SmartyStreets のソフトウェア エンジニアです。その他の質問にお答えします。

于 2012-01-06T23:49:20.017 に答える
-1

これらすべての一般的に使用されるサフィックスを含む配列を作成し、 each メソッドでそれらを繰り返し、文字列で処理できますか?

それは確かに、これらの多くのサブシステムよりもエレガントです。

于 2010-06-08T04:37:18.823 に答える