从用符号、Tab等等方式正在划分的文字块中,取出指定了位置的文字块


    Public Function StrExtract(ByRef sStr As String, ByRef iCol As Short, ByRef sSeparater As String) As String

  --sStr = 1,2,3,4,5

  -- iCol = 4

  -- sSeparate = ","
        Dim i As Short
        Dim j As Short
        Dim k As Short
        
        Try
            j = 0
            k = 1
            Do

      //从j + 1的位置开始检索,取得sSeparater符号,在字符串sStr中的索引位置,InStr方法索引从1开始
                i = InStr(j + 1, sStr, sSeparater)

      //从指定位置开始检索,但是找不到sSeparater符号时
                If i = 0 Then

      //找不到符号,如以上字符串5所在的情况,j是上一个逗号所在的位置
                    If (k = iCol) And (j < Len(sStr)) Then

       //从上一个逗号 + 1 的位置,开始截取 总长度 - j(因为索引是从1开始)

       // * 注意 lsLine.IndexOf("=") 方法索引又是从0开始。  "Dte"="2017/01/01"       5

       // * InStr(1, "123456789", "8") 方法索引又是从1开始。    8


                        StrExtract = Mid(sStr, j + 1, Len(sStr) - j)
                        Exit Function
                    Else
                        StrExtract = ""
                        Exit Function
                    End If
                Else

      //参数iCol = 4,取第4个逗号前面的值
                    If k = iCol Then

         //截取了两个逗号之间的字符串

         // j 上一个逗号的索引位置 + 1,的位置开始截取字符串

       // 截取字符串长度(Length)为i当前逗号所在的索引位置 - 上一个逗号所在的索引位置 - 1(自身逗号占用长度)


                        StrExtract = Mid(sStr, j + 1, i - j - 1)
                        Exit Function
                    Else

         // j 是检索的起始位置,i 是逗号所在的索引位置,目的是从寻找下一个逗号
                        j = i
                        k = k + 1
                    End If
                End If
            Loop
            Exit Function
        Catch ex As Exception
            StrExtract = ""
            LogProcNam("StrExtract")
        End Try
    End Function

猜你喜欢

转载自www.cnblogs.com/gongjin/p/9122630.html
今日推荐