利用InStr函数计算字符串出现的次数

ZDNet软件频道 时间:2003-11-12 作者:ZDNet China |  我要评论()
本文关键词:vbtips
Visual Basic可以利用Instr函数很容易的找到指定字符串在另一字符串中最先出现的位置。但是如何计算指定字符串在另一字符串中出现的次数?其实通过一个小技巧Instr函数同样可以很好地完成。
本文译自Builder.com,未经许可请勿转载

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。



责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134