想知道Visual BASIC v.0.6中文本框中出现一个单词的次数? 我试图使用列表中的计数器,但它不是很好
例如:在下面的句子中: "去玩,回家" ...动词"去"出现2次..然后..我想要计算动词出现次数的代码"去"并通过标签告诉我,例如:2次
例如:在下面的句子中: "去玩,回家" ...动词"去"出现2次..然后..我想要计算动词出现次数的代码"去"并通过标签告诉我,例如:2次
答案 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"不计算在内。