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.
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.

2 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.
 

Logge dich ein, um hier zu kommentieren!