Public Function JetCountStrInstrTimesLocateRev%(ByVal JetSource$, ByVal JetFindStr$, Optional ByVal JetTimes%, Optional ByVal JetTempInstr%, Optional ByVal JetTrue_UCASE As Boolean)
' 目的:找出 參數1 中 “倒數” ((1)第 參數3 次 or (2) 參數4 之後) 參數2 出現的位置
'
' 參照:
' 【Module】
' (1) 本 Module 中的 JetGetStr_Replace$
'
' =============================================================================
' 參數一(JetSource$) :待找的大目標
' 參數二(JetFindStr$) :待找的小目標
' -----------------------------------------------------------------------------
' 【(2)非必要參數】
' 參數三(JetTimes%) :以 參數三 次 ==> 來判斷
' 參數四(JetTempInstr%):省略掉 前參數四個字元
' (◎當 參數三 = 0 才會有效)
' 參數五(JetTrue_UCASE):(是否) 分大小寫
' =============================================================================
Dim JetFound%, JJJ%
Dim JetSource_Temp$
JetSource_Temp$ = JetSource$
If Not JetTrue_UCASE Then
' ◎因為 不分大小寫,所以 先把 關鍵字的部份 JetFindStr$ 改成一致 (全大寫)
JetSource$ = JetGetStr_Replace$(JetSource$, JetFindStr$, UCase(JetFindStr$), , True)
End If
' (1)第 參數三 次
If JetTempInstr% = 0 Then
If JetTimes = 0 Then JetTimes = 1
If Not JetTrue_UCASE Then
JetFound = InStrRev(JetSource$, UCase(JetFindStr$))
Else
JetFound = InStrRev(JetSource$, JetFindStr$)
End If
Do While (JetFound <> 0) And (JJJ + 1 <> JetTimes)
JJJ = JJJ + 1
JetSource$ = Left(JetSource$, JetFound - 1)
If Not JetTrue_UCASE Then
JetFound = InStrRev(JetSource$, UCase$(JetFindStr$))
Else
JetFound = InStrRev(JetSource$, JetFindStr$)
End If
Loop
' (2)參數四 之後
Else
JetSource$ = Mid(JetSource, JetTempInstr% + 1)
If Not JetTrue_UCASE Then
JetFound = InStrRev(JetSource$, UCase$(JetFindStr$))
Else
JetFound = InStrRev(JetSource$, JetFindStr$)
End If
Select Case JetTimes
Case 0, 1
Case Else
Do While (JetFound <> 0) And (JJJ + 1 <> JetTimes)
JJJ = JJJ + 1
JetSource$ = Left(JetSource$, JetFound - 1)
If Not JetTrue_UCASE Then
JetFound = InStrRev(JetSource$, UCase$(JetFindStr$))
Else
JetFound = InStrRev(JetSource$, JetFindStr$)
End If
Loop
End Select
End If
JetCountStrInstrTimesLocateRev = JetFound
End Function
|