首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby -在字符串中查找和替换常用的街道后缀

ruby -在字符串中查找和替换常用的街道后缀
EN

Stack Overflow用户
提问于 2010-06-08 12:10:17
回答 4查看 672关注 0票数 1

邮局实际上在地址中发布了一个常用街道后缀的列表:

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

我想用这个列表做一个ruby函数,它接受一个字符串,最后一个单词(“183main strt".split‘'.last),如果它匹配任何常用的街道后缀("strt"),就用官方的Postal Service Standard后缀("st")代替它。

有没有比大规模str.sub.sub更好的方法呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-08 12:40:52

我会将后缀放在一个散列中,其中公共后缀是键,官方后缀是值。然后,您可以在散列中查找最后一个单词。

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2010-06-09 23:22:46

代码语言:javascript
复制
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")
票数 1
EN

Stack Overflow用户

发布于 2012-01-07 07:49:20

+1,用于使用CASS供应商--尤其是提供API的供应商,该API将始终返回真实地址的标准化结果。此外,一些服务实际上会为您返回已拆分的地址部分(例如街道后缀)。因为它只是使用USPS数据和约定进行了验证,所以后缀已经是USPS首选的形式。下面是一些像API这样的示例代码:

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

这段代码调用SmartyStreets LiveAddress API (注意'street_suffix‘字段)。我是SmartyStreets的一名软件工程师,可以回答您可能有的任何其他问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2994700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档