ведение учета и хранение текстовых экземпляров - PullRequest
0 голосов
/ 22 сентября 2011

Я хотел бы создать простой код, который будет подсчитывать три самых повторяющихся строки / текста в текстовом файле, а затем сохранять эту строку / текст в другой текстовый файл (который, в свою очередь, будет считан в систему переменных AutoCAD).

Забывая часть AutoCAD, которой я могу управлять, как мне сохранить в VB.net 3 наиболее повторяющиеся строки текста в свой текстовый файл, см. Пример ниже:

Текстовый файл для чтения читается как

APG BTR VTS VTS VTS VTS BTR BTR APG PNG

Программа VB.net затем сохраняет текст VTS в mostused.txt BTR в 2ndmostused.txt и APG в 3rdmostused.txt

Как этого лучше всего достичь?

1 Ответ

0 голосов
/ 22 сентября 2011

Поскольку я разработчик C #, я буду использовать его:

var dict = new Dictionary<string, int>();
using(var sr = new StreamReader(file))
{
   var line = string.Empty;
   while ((line = sr.ReadLine()) != null) 
   {
     var words = line.Split(' '); // get the words
     foreach(var word in words)
     {
       if(!dict.Contains(word)) dict.Add(word, 0);
       dict[word]++; // count them
     }
   }
}

var query = from d in dict select d order by d.Value; // now you have it sorted
int counter = 1;
foreach(var pair in query)
{
   using(var sw = new StreamWriter("file" + counter + ".txt"))
     sw.writer(pair.Key);
}
...