2015-06-14 4 views
0

У меня есть функция, которая выполняет поиск количества нескольких слов в текстовом файле.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 

Теперь я хочу, чтобы сосчитать их, зная, что эти слова являются динамическими, то есть поставить столько слов, сколько вы хотите. Другими словами, как я могу узнать, сколько слов вводится и найти их количество, я не знаю, как вернуть их через функцию.

ответ

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, поэтому могут быть некоторые ошибки. Однако я считаю, что концепция важнее в таких ответах.

+0

Большое спасибо, но есть что-то неправильно в строке 2, новая строка – user2618553

+0

Как я уже писал в моем ответе: Прошло много времени с моих дней vb.net. но, поскольку вы приняли ответ, я думаю, вы нашли и исправили проблему. не стесняйтесь редактировать мой ответ, чтобы исправить проблемы. –

0

Как об использовании LINQ для отображения слов в Dictionary<TKey, TValue> где TKey это слово (String) и TValue является счетчиком регулярных выражений (Int32)?

Dim words = {"test1", "test2"} 
Dim result = words.ToDictionary(Function(w) w, Function(w) Regex.Matches(textlog, w).Count) 

Если вы хотите, чтобы получить дубликаты, добавьте следующие строки в конце выражения Linq:

.Where(Function(p) p.Value > 1) 
Смежные вопросы