首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从地址中删除街道后缀

从地址中删除街道后缀
EN

Stack Overflow用户
提问于 2016-05-23 11:50:59
回答 4查看 474关注 0票数 1

试图识别(并删除)街道后缀(如"St“、"Dr”等)从地址。假设后缀是一致的,我们可以创建一个完整的列表。

谢谢!

代码语言:javascript
运行
复制
 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 = 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-23 12:05:46

你只需要用Regexp把街道和后缀分开

代码语言:javascript
运行
复制
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):

代码语言:javascript
运行
复制
idx = /\b(#{Regexp.union(street_suffix_list)})\z/ =~ address    
票数 2
EN

Stack Overflow用户

发布于 2016-05-23 11:58:51

使用‘街道地址’创业板,您可以解析任何地址并提取地址的组件。

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

Stack Overflow用户

发布于 2016-05-23 12:02:42

您可以通过交替构建动态正则表达式模式(如果存在,还可以在末尾匹配可选点以删除标点符号):

代码语言:javascript
运行
复制
/\b(?:St|Dr|Ave|Blvd|Tr)\b\.*/

请参阅这个regex演示

这是示例Ruby代码

代码语言:javascript
运行
复制
street_suffix_list = ["St", "Dr", "Ave", "Blvd", "Tr"]
address = "105 Main St"
puts address.gsub(/\b(?:#{street_suffix_list.join("|")})\b\.*/, "").strip
# => 105 Main 

注意,没有字边界,您将删除Tr Transylvania 和类似的.

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

https://stackoverflow.com/questions/37390247

复制
相关文章

相似问题

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