Visual Basic可以利用Instr函数很容易的找到指定字符串在另一字符串中最先出现的位置。但是如何计算指定字符串在另一字符串中出现的次数?计算字符串出现次数的方法我们在网页搜索中会用到。在一个网页中,所感兴趣的字符串出现的次数越多,这个网页和所需查找的网页越有联系。
你可以用Instr函数自己编写计算字符串出现次数的程序,重复的调用这个函数直到返回值为0。每次调用函数后把当前位置作为起始位置进行继续查找,这样函数就可以找到目标字符串下次出现的位置。累加找到的次数,当函数值返回为0,程序结束。
下面的代码向我们演示了程序是如何工作的:
Public Function CountSubstrings(target As String, _
template As String, CaseSensitive As Boolean) _
As Integer
' Returns the number of times template occurs in target.
' Returns -1 if either string is blank or if templateis longer
than target.
If CaseSensitive is true, performs a case-sensitive comparison for text.
If false, the comparison is case-insensitive.
Dim pos1 As Integer, pos2 As Integer, count As Integer
If Len(target) = 0 Or Len(template) = 0 Or _
Len(template) > Len(target) Then
CountSubstrings = -1
Exit Function
End If
count = 0
pos2 = 1
Do
If CaseSensitive Then
pos1 = InStr(pos2, target, template, vbBinaryCompare)
Else
pos1 = InStr(pos2, target, template, vbTextCompare)
End If
If pos1 > 0 Then
count = count + 1
pos2 = pos1 + 1
End If
Loop Until pos1 = 0
CountSubstrings = count
End Function
这个函数名叫做CountSubstrings。你在搜索指定字符串,寻找需要模版字符串,在不区分大小写并指定了布林逻辑运算元的情况下搜索文本的时候可以使用它。注意,这个代码在下面三种情况下可能会出现错误:
1 目标字符串是空白的;
2 模版字符串是空白的;
3 模版字符串长于目标字符串。
发生三种情况中任一种,函数的返回值是-1。