VB.Net为每个添加计数

时间:2015-06-14 09:05:23

标签: vb.net

我有一个搜索文本文件中多个单词计数的函数。

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

现在我想要计算它们,知道这些单词是动态的,意思是尽可能多地添加单词。换句话说,我如何知道输入了多少单词并找到了它们的数量,我不知道如何通过该函数返回它们。

2 个答案:

答案 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)