试图识别(并删除)街道后缀(如"St“、"Dr”等)从地址。假设后缀是一致的,我们可以创建一个完整的列表。
谢谢!
street_suffix_list = ["St", "Dr", "Ave", "Blvd", "Tr"]
address = "105 Main St"
#returns "Main St"
street = address.gsub(/^((\d[a-zA-Z])|[^a-zA-Z])*/, '')
#desired: "St"
street_suffix =
#desired: "Main"
street_name =
发布于 2016-05-23 04:05:46
你只需要用Regexp
把街道和后缀分开
street_suffix_list = ["St", "Dr", "Ave", "Blvd", "Tr"]
address = "105 Main St"
idx = /(#{street_suffix_list.join('|')})\z/ =~ address
# $1 => St
sfx = $1
street = address[0..idx-1].strip
# street => "105 Main"
对于带有::union
方法的后缀数组,最好使用安全连接方法(thanx @Jordan):
idx = /\b(#{Regexp.union(street_suffix_list)})\z/ =~ address
发布于 2016-05-23 03:58:51
使用‘街道地址’创业板,您可以解析任何地址并提取地址的组件。
gem install StreetAddress
irb
1.9.3-p551 :002 > require 'street_address'
=> true
1.9.3-p551 :003 > address = StreetAddress::US.parse("1600 Pennsylvania Ave, Washington, DC, 20500")
=> 1600 Pennsylvania Ave, Washington, DC 20500
1.9.3-p551 :004 > address.street
=> "Pennsylvania"
1.9.3-p551 :005 >
发布于 2016-05-23 04:02:42
https://stackoverflow.com/questions/37390247
复制相似问题