asdflksf前面随便是什么,也可能还有中文jsdjfsf ZWD 这里是需要读取的数据1 GXX ZWD 这里是需要读取的数据2 GXX ZWD 这里是需要读取的数据3 GXX ZWD 这里是需要读取的数据N GXX dfasdf后面随便什么,也有可能含有中文sdfsdfsdfsdafsdaf 所需要读取的数据为 GXX 和 ZWD 中间的数据 
如何读取并且保存到一个数组呢? 
请各位达人给个例子(最好源代码),谢谢了要求做一函数,能得到数据,比如 
txtn=gettxt(n) 输出后 txtn= 这里是需要读取的数据N这个问题引用一朋友的,没有分,我这边再次发一次,给分

解决方案 »

  1.   

    没看明白  ???是不是 一段字符 中间用空格 隔开吗? 这样就简单了 dim s
    s= Split(字符, “ ”) S就变成个数组了
      

  2.   

    查找GXX和ZWD字符的位置,然后取其中的字符就行了
      

  3.   

    mid  和 instr
     有中文按一个字符计算
      

  4.   


    'N表示你要取的第几个数据,strInfo 存储了你要处理的字符串
    '调用函数 gettxt(3,strInfo) 就可以得到第三个数据
    Public Function gettxt(ByVal N As Long, ByVal strInfo As String) As String
    Dim str As String
    Dim i, IBefore, Iafter, IKeyPosition As Long
    str = strInfo
    IKeyPosition = 1
    IBegin = 1For i = 0 To N - 1
        IBegin = InStr(IBegin, str, "ZWD", vbTextCompare)
        If IBegin > 0 Then
            IBegin = IBegin + Len("ZWD")
        Else
            Exit For
        End If
    NextIf IBegin = 0 Then
        gettxt = ""
        MsgBox "There is no record '" & N & "' !"
        Exit Function
    End IfIafter = InStr(IBegin, str, "GXX", vbTextCompare)
    If Iafter = 0 Then
        MsgBox "There is no 'GXX' after record 'N' !"
        gettxt = ""
        Exit Function
    End If
    gettxt = Trim(Mid(str, IBegin, Iafter - IBegin))
    MsgBox gettxt
    End Function
      

  5.   

    我是5楼 , 你可以在form里添加一个按钮,使用下面代码调用该函数Private Sub Command1_Click()
    Dim str As String
    Dim RecordN As String
    str = "也可能还有中文jsdjfsf ZWD 这里是需要读取的数据1 GXX ZWD 这里是需要读取的数据2 GXX " _
    & "ZWD 这里是需要读取的数据3 GXX ZWD 这里是需要读取的数据N GXX dfasdf后面随便什么," _
    & "也有可能含有中文sdfsdfsdfsdafsdaf"
    RecordN = gettxt(3, str)
    End Sub
      

  6.   

    '示例数据:asdflksf前面随便是什么,也可能还有中文jsdjfsf ZWD 这里是需要读取的数据1 GXX ZWD 这里是需要读取的数据2 GXX ZWD 这里是需要读取的数据3 GXX ZWD 这里是需要读取的数据N GXX dfasdf后面随便什么,也有可能含有中文sdfsdfsdfsdafsdafOption ExplicitPrivate Sub Command1_Click()
       Dim StrData1() As String
       Dim StrData2() As String
       Dim i As Long
       StrData1 = Split(Text1.Text, "ZWD")
       If UBound(StrData1) > 0 Then
         For i = 0 To UBound(StrData1)
            StrData2 = Split(StrData1(i), "GXX")
            If UBound(StrData2) > 0 Then
               MsgBox StrData2(0)
            End If
         Next
       End If
    End Sub
      

  7.   

    '接收,请将示例数据,复制至 Text1 中
      

  8.   


    '使用下面代码调用该函数 
    Private Sub Command1_Click()
    Dim str As String
    Dim RecordN, strBefore, strAfter As String
    str = "也可能还有中文jsdjfsf ZWD 这里是需要读取的数据1 GXX ZWD 这里是需要读取的数据2 GXX " _
    & "ZWD 这里是需要读取的数据3 GXX ZWD 这里是需要读取的数据N GXX dfasdf后面随便什么," _
    & "也有可能含有中文sdfsdfsdfsdafsdaf"
    strBefore = "ZWD"
    strAfter = "GXX"
    RecordN = gettxt(3, str, strBefore, strAfter)
    End Sub'函数修改如下:
    'BeforeDelimiter 代表前面的标识符,afterDelimiter 代表后面的标识符,可以一样。
    '
    'N表示你要取的第几个数据,strInfo 存储了你要处理的字符串
    Public Function gettxt(ByVal N As Long, ByVal strInfo As String, _
                           ByVal BeforeDelimiter As String, ByVal afterDelimiter As String) As String
    Dim str As String
    Dim i, IBefore, Iafter, IKeyPosition As Long
    Dim flag As Boolean
    str = strInfo
    IKeyPosition = 1
    Ibegin = 1
    If Trim(UCase(BeforeDelimiter)) = Trim(UCase(afterDelimiter)) Then
        Ibegin = InStr(1, str, BeforeDelimiter, vbTextCompare) + Len(BeforeDelimiter)
        N = N - 1
        flag = True
    End IfFor i = 0 To N - 1
        Ibegin = InStr(Ibegin, str, BeforeDelimiter, vbTextCompare)
        Ibegin = IIf(flag, InStr(Ibegin + Len(BeforeDelimiter), str, BeforeDelimiter, vbTextCompare), Ibegin)
        If Ibegin > 0 Then
            Ibegin = Ibegin + Len(BeforeDelimiter)
        Else
            Exit For
        End If
    NextIf Ibegin = 0 Then
        gettxt = ""
        MsgBox "There is no record '" & IIf(flag, N + 1, N) & "' !"
        Exit Function
    End IfIafter = InStr(Ibegin, str, afterDelimiter, vbTextCompare)
    If Iafter = 0 Then
        MsgBox "There is no '" & afterDelimiter & "' after record '" & IIf(flag, N + 1, N) & "' !"
        gettxt = ""
        Exit Function
    End If
    gettxt = Trim(Mid(str, Ibegin, Iafter - Ibegin))
    MsgBox gettxt
    End Function