rechercher un fichier texte en utilisant c # et afficher le numéro de la ligne et la ligne complète qui contient le mot-clé de recherche

StackOverflow https://stackoverflow.com/questions/2437716

Question

Je besoin d'aide pour rechercher un fichier texte (fichier journal) en utilisant c # et afficher le numéro de la ligne et la ligne complète qui contient le mot-clé de recherche.

Était-ce utile?

La solution

Ceci est une légère modification de: http: / /msdn.microsoft.com/en-us/library/aa287535%28VS.71%29.aspx

int counter = 0;
string line;

// Read the file and display it line by line.
System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
    if ( line.Contains("word") )
    {
        Console.WriteLine (counter.ToString() + ": " + line);
    }

   counter++;
}

file.Close();

Autres conseils

peu en retard au jeu sur celui-ci, mais est arrivé sur ce poste et je pensais que j'ajouter une réponse alternative.

foreach (var match in File.ReadLines(@"c:\LogFile.txt")
                          .Select((text, index) => new { text, lineNumber = index+ 1 })
                          .Where(x => x.text.Contains("SEARCHWORD")))
{
    Console.WriteLine("{0}: {1}", match.lineNumber, match.text);
}

utilise:

  • File.ReadLines , ce qui élimine le besoin d'un StreamReader, et il joue aussi bien avec la clause de Where de LINQ pour retourner un ensemble filtré de lignes à partir d'un fichier.

  • La surcharge de Enumerable.Select qui retourne l'index de chaque élément, que vous peut alors ajouter 1 à, pour obtenir le numéro de ligne pour la ligne correspondante.

Exemple d'entrée:

just a sample line
another sample line
first matching SEARCHWORD line
not a match
...here's aSEARCHWORDmatch
SEARCHWORD123
asdfasdfasdf

Sortie:

3: first matching SEARCHWORD line
5: ...here's aSEARCHWORDmatch
6: SEARCHWORD123

Pour exporter ne Excel, vous pouvez utiliser le format de fichier CSV, comme écrit Pessimiste. Si vous n'êtes pas certain de quoi écrire, essayez d'entrer des données dans MS Excel et cliquez sur « Enregistrer sous » option dans le menu et choisissez CSV comme type de fichier.

Faites attention lors de l'écriture d'un format de fichier CSV dans certaines langues par défaut pour la séparation des valeurs n'est pas la virgule. En portugais bresilien, par exemple, la valeur par défaut est la virgule comme séparateur décimal, point comme séparateur de milliers et Virgule pour séparer les valeurs. Attention à la culture lors de l'écriture que.

L'autre alternative est d'utiliser des onglets horizontaux comme séparateurs. Expérience pour écrire une chaîne, appuyez sur la touche TAB, puis une autre chaîne et collez-le dans Microsoft Excel. Il est le séparateur par défaut dans ce programme.

Si vous utilisez une solution ad hoc à votre problème spécifique, que ce soit des solutions de rechange peuvent être utilisés sans beaucoup de réflexion. Si vous programmez quelque chose à être utilisé par d'autres personnes (ou dans d'autres environnements), l'esprit les différences spécifiques de la culture.

Oh, je viens de me rappeler maintenant: vous pouvez écrire une feuille de calcul en utilisant XML, vous pouvez le faire avec seulement le package .NET. Je l'ai fait il y a quelques années avec C # .NET 2.0

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top