我有一个搜索文本文件中多个单词计数的函数。
Dim textlog = File.ReadAllText("D:\1.txt")
Dim count = Regex.Matches(textlog, "test1").Count
Dim count1 = Regex.Matches(textlog, "test2").Count
Label1.Text = (count)
Label4.Text = (count1)
它运行正常,但我想将单词作为参数传递给函数。 我这样做了:
Dim values As String
values = words
Dim wordlist As String() = Nothing
wordlist = values.Split(",")
Dim w As String
For Each w In wordlist
'''''''
' search function here
'''''''
Next w
现在我想要计算它们,知道这些单词是动态的,意思是尽可能多地添加单词。换句话说,我如何知道输入了多少单词并找到了它们的数量,我不知道如何通过该函数返回它们。
答案 0 :(得分:0)
不确定regEx
是执行此类操作的最有效方法,但这是基于您自己的代码的解决方案:
Function CountWords(FileName as string, wordlist As String()) As String(,)
Dim ReturnValue as string(,) = new string(wordlist.Length, 2)
Dim textlog = File.ReadAllText(FileName)
Dim i as Integer = 0
Foreach Word as string in wordlist
ReturnValue(i,0) = Word
ReturnValue(i,1) = Regex.Matches(textlog, Word).Count
i+=1
Next
Return ReturnValue
End Function
注意:代码是直接写在这里的,自我的vb.net时代起已经有一段时间了,所以可能会出现一些错误。但是,我认为这个概念在这些答案中更为重要。
答案 1 :(得分:0)
如何使用LINQ将单词映射到Dictionary<TKey, TValue>,其中print(m + "... ", end='')
sys.stdout.flush()
是单词(String),TKey
是正则表达式计数(Int32)?
TValue
如果您只想获得重复项,请将以下内容添加到linq表达式的末尾:
Dim words = {"test1", "test2"}
Dim result = words.ToDictionary(Function(w) w, Function(w) Regex.Matches(textlog, w).Count)