+ -
当前位置:首页 → 问答吧 → 请教一个字符串提取的问题

请教一个字符串提取的问题

时间:2011-10-27

来源:互联网

有一个变量是一个字符串,变量名为“地址”,具体的信息是省名市民县名乡镇名和村名,如**省(直辖市)**市(区)**乡(镇)**村,如何把这个变量拆分成省变量,市变量,乡变量和村变量呢?难点在于提取的字符长度不确定,关键字信息(乡或镇)也不固定。
希望能给出详细代码,谢谢!

作者: ASTERIOD   发布时间: 2011-10-27

省、市、乡、村是固定的,直辖市、镇也是固定的,找到这些关键字,拆分应该没有什么问题。

作者: chinaboyzyq   发布时间: 2011-10-28

给出范例。输入数据是什么,期望输出数据是什么

作者: sysdzw   发布时间: 2011-10-28

给出数据看看嘛~~

作者: h553690677   发布时间: 2011-10-28

楼主请自己建一个工程。把以下代码COPY到代码框,运行,看窗体上的结果,或者debug的结果即可。
不知道这是不是你的意思。

VB code

Option Explicit

Private Sub Form_Load()

    Me.AutoRedraw = True
    Dim addStr As String, LoProvince As Integer, LoCity As Integer, LoCountry As Integer, LoTown As Integer, LoVillage As Integer, getStr As String
    
    addStr = "河北省沧州市延山县庆云镇桃李村"
    
    LoProvince = InStr(1, addStr, "", vbTextCompare)
    getStr = Mid(addStr, 1, LoProvince)
    Me.Print getStr
    Debug.Print getStr
    
    LoCity = InStr(1, addStr, "", vbTextCompare)
    getStr = Mid(addStr, LoProvince + 1, LoCity - LoProvince)
    Me.Print getStr
    Debug.Print getStr
    
    LoCountry = InStr(1, addStr, "", vbTextCompare)
    getStr = Mid(addStr, LoCity + 1, LoCountry - LoCity)
    Me.Print getStr
    Debug.Print getStr
    
    LoTown = InStr(1, addStr, "", vbTextCompare)
    getStr = Mid(addStr, LoCountry + 1, LoTown - LoCountry)
    Me.Print getStr
    Debug.Print getStr
    
    LoVillage = InStr(1, addStr, "", vbTextCompare)
    getStr = Mid(addStr, LoTown + 1, LoVillage - LoTown)
    Me.Print getStr
    Debug.Print getStr

End Sub

作者: luobaoline   发布时间: 2011-10-28

引用 4 楼 luobaoline 的回复:

楼主请自己建一个工程。把以下代码COPY到代码框,运行,看窗体上的结果,或者debug的结果即可。
不知道这是不是你的意思。

VB code

Option Explicit

Private Sub Form_Load()

Me.AutoRedraw = True
Dim addStr As String, LoProvince As Integer, LoCity……
借数据用下。.

'此代码由“正则测试工具 v1.1.35”自动生成,请直接调用TestReg过程
VB code
Private Sub TestReg()
    Dim strData As String
    Dim reg As Object
    Dim matchs As Object, match As Object

    strData = "河北省沧州市延山县庆云镇桃李村"

    Set reg = CreateObject("vbscript.regExp")
    reg.Global = True
    reg.IgnoreCase = True
    reg.MultiLine = True
    reg.Pattern = "(.*?)省(.*?)市(.*?)县(.*?)镇(.*?)村"
    Set matchs = reg.Execute(strData)
    For Each match In matchs
        Debug.Print match.SubMatches(0),match.SubMatches(1),match.SubMatches(2),match.SubMatches(3),match.SubMatches(4)
    Next
End Sub

作者: sysdzw   发布时间: 2011-10-28

热门下载

更多