1. 程式人生 > >從用符號、Tab等等方式正在劃分的文字塊中,取出指定了位置的文字塊

從用符號、Tab等等方式正在劃分的文字塊中,取出指定了位置的文字塊

取字符串 sep extract 所在 CA col 字符串 截取 指定


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

從用符號、Tab等等方式正在劃分的文字塊中,取出指定了位置的文字塊