Feedback

C# - Text in Textdateien suchen

Veröffentlicht von am 10.05.2011
(2 Bewertungen)
Dieser Code gibt eine ArrayList mit den Namen(inkl. Pfad) aller Textdateien im Suchverzeichnis und dessen Unterverzeichnisse zurück die den gesuchten String beinhalten.
GFU-Schulungen  [Anzeige]

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

public static List<string> SearchStringInTextFiles(string pfad, string search)
{
  List<string> matchFiles = new List<string>();
  if (search != "")
  {
    string pattern = search;
    string[] metaChars = new string[] { @"\", @"*", @"+", @"?", @".", @"(", @")", @"[", @"]", @"{", @"}", @"/", @"|", @"^", @"$" };
    foreach (string s in metaChars)
    {
      pattern = pattern.Replace(s, @"\" + s);
    }
    foreach (string fileName in Directory.GetFiles(pfad, "*.txt", SearchOption.AllDirectories))
    {
      string[] lines = File.ReadAllLines(fileName);
      if (lines.Length > 0)
      {
        if (System.Text.RegularExpressions.Regex.IsMatch(String.Join(Environment.NewLine, lines), pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
        {
          matchFiles.Add(fileName);
        }
      }
    }
  }
  return matchFiles;
}
Abgelegt unter Datei, durchsuchen.

3 Kommentare zum Snippet

Scavanger schrieb am 15.05.2011:
ArrayList ist veraltet, und gehört dringendst eingemottet, es gibt keinen Grund mehr die untypisierten Listen zu verwenden, verwende stattdessen eine generische Liste, in diesem Fall List<string>.
Andi Mahr schrieb am 19.05.2011:
@Scavanger
Du hast recht. Habs entsprechend geändert.
stuemi schrieb am 05.03.2018:
Habe den Code in mein Projekt eingebaut und alles klappt soweit einwandfrei.
Mir ist jedoch aufgefallen, dass wenn ich den gleichen Ordner unmittelbar danach noch einmal durchsuche, die Suche weitaus schneller durchläut. Warte ich etwas (z.B. 1. Stunde) und durchsuche dann noch einmal den Ordner, dauert es wieder länger. (ca. 12000 Textdateien bei 100 Zeilen pro Datei).
Wird da etwas im Hintergrund gespeichert, was weitere Suchen beschleunigt? Wenn ja, hat man irgendwie Einfluss darauf?
 

Logge dich ein, um hier zu kommentieren!