例子1:{Split+UBound法}- 文本内容="苹果|苹果|西瓜|橘子|西瓜|西瓜"
- s = split(文本内容, "苹果")
- 苹果数量 = UBound(s)
- s = split(文本内容, "西瓜")
- 西瓜数量 = UBound(s)
- s = split(文本内容, "橘子")
- 橘子数量 = UBound(s)
- TracePrint "苹果数量:" & 苹果数量 & "; 西瓜数量:" & 西瓜数量 & "; 橘子数量:" & 橘子数量
复制代码 例子2:{累计法}- 文本内容="苹果|苹果|西瓜|橘子|西瓜|西瓜"
- MyArray = Split(文本内容, "|")
- If UBound(MyArray)>=0 Then
- i = 0
- For UBound(MyArray)
- s = split(文本内容, MyArray(i))
- a = MyArray(i) & "有" & UBound(s) & "个,"
- If InStr(y,a)>0 Then
- Else
- y=y&a
- End If
- i = i + 1
- Next
- End If
- TracePrint y
复制代码 例子3:{Filter法}- Text ="a|b|c|a|a"
- b = split(text, "|")
- gs = Filter(b, "a")
- TracePrint UBound(gs)+1
复制代码 例子4:{正则法}- Function strnum(patrn, strng)
- Set regEx = New RegExp
- regEx.Pattern = patrn
- regEx.IgnoreCase = True
- Execute "regEx.Global = True"
- Set Matches = regEx.Execute(strng)
- For Each Match in Matches
- '对每个匹配项的处理
- Next
- strnum =Matches.count '直接返回匹配数量
- End Function
- MsgBox strnum("bg","bghbghbhbgabcbbgbg")
复制代码 增强用法:{返回符合指定数量的内容}- var = "AA|天才|天才|AA|AA|AA|天才|天才|DD"
- TracePrint 返回符合数量的(var, 4)
- Function 返回符合数量的(内容, 数量)
- 分割 = Split(内容, "|")
- For i = 0 To UBound(分割)
- 累计=0
- TracePrint 分割(i)
- For j = 0 To UBound(分割)
- If 分割(i) = 分割(j) Then
- 累计=累计+1
- End If
- If 累计 >= 数量 Then
- If instr(总, 分割(i)) = 0 Then
- 总=总&分割(i)&"|"
- End If
- End If
- Next
- Next
- If 总 <> "" Then
- 返回符合数量的=mid(总,1,len(总)-1)
- End If
- End Function
复制代码var = "AA|BB|BB|AA|AA|AA|CC|CC|DD"
TracePrint 返回符合数量的(var, 2)
Function 返回符合数量的(内容, 数量)
返回符合数量的 = ""
总=""
分割 = Split(内容, "|")
For i = 0 To UBound(分割)
数量1 = Filter(分割,分割(i) )
If UBound(数量1) + 1 >= 数量 Then
If instr(总, 分割(i) & "|") = 0 Then
总=总&分割(i) &"|"
End If
End If
Next
返回符合数量的=mid(总,1,len(总)-1)
End Function