Foxtable(狐表)用户栏目专家坐堂 → [求助]如何分离地理位置


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

主题:[求助]如何分离地理位置

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
[求助]如何分离地理位置  发帖心情 Post By:2016/5/21 8:09:00 [只看该作者]

各位老师,这是我写的一个分离具体地理位置的代码,运行时正常的,但就是觉得有点麻烦,而且不严谨,不知道有么有简答的解决方法
Dim addr As String="甘肃省兰州市安宁区马家镇银滩路街道"
Dim prov As String
Dim City As String
Dim Town As String
Dim cntsd As String
Dim cnt As String
If addr.contains("省")
    Prov =addr.Substring(0,addr.Indexof("省")+1)
    If  addr.contains("市")
        City=addr.Substring(addr.Indexof("省")+1,addr.Indexof("市")-addr.Indexof("省"))
        If  addr.contains("区")
            Town=addr.Substring(addr.Indexof("市")+1,addr.Indexof("区")-addr.Indexof("市"))
            If  addr.contains("乡")
                cntsd=addr.Substring(addr.Indexof("县")+1,addr.Indexof("乡")-addr.Indexof("县"))
                If  addr.contains("村")
                    cnt=addr.Substring(addr.Indexof("乡")+1,addr.Indexof("村")-addr.Indexof("乡"))
                ElseIf  addr.contains("街道")
                    cnt=addr.Substring(addr.Indexof("乡")+1,addr.Indexof("街道")-addr.Indexof("乡"))
                End If
            ElseIf  addr.contains("镇")
                cntsd=addr.Substring(addr.Indexof("县")+1,addr.Indexof("镇")-addr.Indexof("县"))
                If  addr.contains("村")
                    cnt=addr.Substring(addr.Indexof("镇")+1,addr.Indexof("村")-addr.Indexof("镇"))
                ElseIf  addr.contains("街道")
                    cnt=addr.Substring(addr.Indexof("镇")+1,addr.Indexof("街道")-addr.Indexof("镇"))
                End If
            End If
        ElseIf   addr.contains("县")
            Town=addr.Substring(addr.Indexof("市")+1,addr.Indexof("县")-addr.Indexof("市"))
            If  addr.contains("乡")
                cntsd=addr.Substring(addr.Indexof("县")+1,addr.Indexof("乡")-addr.Indexof("县"))
                If  addr.contains("村")
                    cnt=addr.Substring(addr.Indexof("乡")+1,addr.Indexof("村")-addr.Indexof("乡"))
                ElseIf  addr.contains("街道")
                    cnt=addr.Substring(addr.Indexof("乡")+1,addr.Indexof("街道")-addr.Indexof("乡"))
                End If
                
            ElseIf  addr.contains("镇")
                cntsd=addr.Substring(addr.Indexof("县")+1,addr.Indexof("镇")-addr.Indexof("县"))
                If  addr.contains("村")
                    cnt=addr.Substring(addr.Indexof("镇")+1,addr.Indexof("村")-addr.Indexof("乡"))
                ElseIf  addr.contains("街道")
                    cnt=addr.Substring(addr.Indexof("镇")+1,addr.Indexof("街道")-addr.Indexof("乡"))
                End If
                
            End If
        End If
        
    End If
End If
output.show(prov & City & Town  & cntsd & cnt)


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


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2016/5/21 10:05:00 [只看该作者]

Dim s As String="甘肃省兰州市安宁区马家镇银滩路街道"
Dim l() As String = {"省","市","区","县","乡","镇","村","街道"}
Dim li As new List(of String)
For i As Integer = 0 To l.Length - 1
    If s.contains(l(i)) Then li.Add(l(i))
Next
If li.Count = 0 Then Return Nothing
Dim strRegex As String = "^"
For Each ss As String In li
    strRegex += "(?<" & ss & ">\w+)" & ss & "+"
Next
Dim r As New System.Text.RegularExpressions.Regex(strRegex.TrimEnd("+"))
For Each ss As String In li
    Output.show(r.Match(s).Result("${" & ss & "}") & ss)
Next

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/5/21 11:30:00 [只看该作者]

Dim s As String="甘肃省兰州市安宁区马家镇银滩路街道"
Dim p As String = "([省市区县乡镇村])"
Dim p2 As String = "([省市区县乡镇村]|街道|街)"
Dim r As New System.Text.RegularExpressions.Regex(p)
Dim str = r.Split(s)
For Each a As String In str
    Output.Show(a)
Next

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By:2016/5/30 20:21:00 [只看该作者]

多谢

 回到顶部