我想知道VB 0.6中文本框中出现一个单词的次数

时间:2014-04-16 21:11:40

标签: vb6

想知道Visual BASIC v.0.6中文本框中出现一个单词的次数? 我试图使用列表中的计数器,但它不是很好

例如:在下面的句子中:  "去玩,回家" ...动词"去"出现2次..然后..我想要计算动词出现次数的代码"去"并通过标签告诉我,例如:2次

例如:在下面的句子中:  "去玩,回家" ...动词"去"出现2次..然后..我想要计算动词出现次数的代码"去"并通过标签告诉我,例如:2次

3 个答案:

答案 0 :(得分:2)

你可以使用replace()从字符串中删除单词,然后将得到的字符串长度与原始字符串的长度进行比较,并将其除以单词的长度

Option Explicit

Private Sub Command1_Click()
  Label1.Caption = CStr(CountWord(Text1.Text, "go")) & " times"
End Sub

Private Sub Form_Load()
  Text1.Text = " go to play and go to home"
End Sub

Private Function CountWord(strText As String, strWord As String) As Long
  CountWord = (Len(strText) - Len(Replace(strText, strWord, ""))) / Len(strWord)
End Function

上面的函数CountWord在strText中查找strWord的数量,它不会搜索单独的单词,但如果strWord是较大单词的一部分,则还会向计数添加一个

例如"去玩,回家去搜索谷歌"将计算" go"

的3个实例

答案 1 :(得分:1)

请尝试以下代码: -

Dim txt$, find$, i1%, count%

txt = "go to play and go to home"
find = "go"

i1 = 0
Do
    i1 = InStr(i1 + 1, txt, find)
    If i1 > 0 Then
        count = count + 1
        i1 = i1 + Len(find)
    Else
        Exit Do
    End If
Loop

MsgBox count

答案 2 :(得分:1)

您可以使用正则表达式计算单词出现次数

Private Sub Form_Load()
    Debug.Print CountWords(" go to play and G.O to home to search on g.o" & vbCrLf & "ogle", "g.o")
End Sub

Private Function CountWords(sText As String, sWord As String) As Long
    Dim sPattern            As String

    sPattern = pvInitRegExp("[-[\]{}()*+?.,\\^$|#\s]").Replace(sWord, "\$&")
    CountWords = pvInitRegExp("\s" & sPattern & "\s").Execute(sText).Count
End Function

Private Function pvInitRegExp(sPattern As String) As Object
    Set pvInitRegExp = CreateObject("VBScript.RegExp")
    With pvInitRegExp
        .Pattern = sPattern
        .Global = True
        .IgnoreCase = True
        .MultiLine = True
    End With
End Function

这也照顾了单词边界,因此" google"不计算在内。