2011-09-22 4 views
0

Je voudrais faire un code simple qui compte les trois premières lignes/textes les plus récurrents dans un fichier txt, puis enregistre cette ligne/texte dans un autre fichier texte (qui à son tour sera lu dans Le système variable d'AutoCAD).garder le compte et stocker des instances de texte

Oublier la partie AutoCAD que je peux gérer comment puis-je en VB.net sauver les 3 lignes les plus récurrentes de texte chacun à son propre fichier texte, voir exemple ci-dessous:

fichier texte à lire se lit comme suit:

APG BTR VTS VTS VTS VTS BTR BTR APG PNG

Le programme VB.net enregistrerait alors le texte VTS à mostused.txt BTR à 2ndmostused.txt et APG à 3rdmostused.txt

Comment cela peut-il être mieux réalisé?

Répondre

0

Depuis que je suis développeur C#, je vais l'utiliser:

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); 
} 
+0

Je pense qu'il ne veut pas de mots dans une ligne, seulement les lignes, qui le rend encore plus simple: ajouter des lignes entières à dict – Martin

Questions connexes