Foxtable(狐表)用户栏目专家坐堂 → [求助]能不能从地址里面解析出省、市、区、详细地址


  共有2785人关注过本帖树形打印复制链接

主题:[求助]能不能从地址里面解析出省、市、区、详细地址

帅哥哟,离线,有人找我吗?
zto001
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1465 积分:10403 威望:0 精华:0 注册:2018/10/16 11:42:00
[求助]能不能从地址里面解析出省、市、区、详细地址  发帖心情 Post By:2020/3/7 20:01:00 [只看该作者]

[求助]能不能从地址里面解析出省、市、区、详细地址
正则表达式行吗?还是其他方法?
[此贴子已经被作者于2020/3/7 20:54:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1465 积分:10403 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2020/3/7 20:15:00 [只看该作者]

https://github.com/pupuk/address-smart-parse
类似于这样

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1465 积分:10403 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2020/3/7 20:47:00 [只看该作者]

Dim str As String = "北京市北京市通州区北苑街道日光清城1号楼3单元203(000000)"
Dim ary() As String = {"^", "(省|自治区)", "(市|盟)", "(县|区|旗)", "(镇|街)", "(村|会)", "$"}
For i As Integer = 0 To 5
    For j As Integer = i To 0 Step -1
        Dim mc = System.Text.RegularExpressions.Regex.Match(str, "(?<=" & ary(j) & ").+" & ary(i+1))
        If mc.success Then
            Output.Show(ary(i+1) & ":" & mc.value)
            Exit For
        End If
    Next
Next
需要得到的结果是:
省份:北京
城市:北京市
区县:通州区
详址:北苑街道日光清城1号楼3单元203(000000)

这种勉强可以,但如果是直辖市或者没有规范填写省市区的,就解析不出来。
如何做到解析直辖市
还有如何解析不规范的省市区。比如就写个北京通州区某某某
或者通州区某某某
或者北京通州某某某?

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1465 积分:10403 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2020/3/7 22:52:00 [只看该作者]

还有存在两个市也分不出来
浙江省温州市瑞安市塘下镇塘西金河大厦大自然
[此贴子已经被作者于2020/3/7 22:52:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/8 20:52:00 [只看该作者]

没有办法,只能做到这样。程序毕竟不是人脑

 回到顶部