從用符號、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
從用符號、Tab等等方式正在劃分的文字塊中,取出指定了位置的文字塊