Поиск строки в нескольких файлах с помощью С#

63
11

Я хочу найти слово или строку в нескольких файлах в каталоге. например "Ошибка", "Предупреждение". Если какой-либо файл содержит любое из трех слов, он должен печатать файлы messages.all в том же каталоге.

С помощью этого кода я могу искать одно слово в одном файле, но я хочу искать все d файлы, доступные в каталоге.

      List<string> found = new List<string>();
string line;
using (StreamReader file = new StreamReader(textBox1.Text))
{
while ((line = file.ReadLine()) != null)
{
if (line.Contains("Error: 1"))
{
found.Add(line);
MessageBox.Show("Error Found");
}
}
}

спросил(а) 2021-01-19T12:22:42+03:00 2 месяца, 4 недели назад
1
Решение
61

Dictionary<string, string> found = new Dictionary<string, string>();
string line;
bool textFound = false;
foreach (string filename in Directory.GetFiles("path-to-directory"))
{
using (StreamReader file = new StreamReader(filename))
{

while ((line = file.ReadLine()) != null)
{
if (line.Contains("Error: 1"))
{
found.Add(line,filename);
MessageBox.Show("Error Found");
textFound = true;
}
if (line.Contains("Warning: 1"))
{
found.Add(line,filename);
MessageBox.Show("Warning Found");
textFound = true;
}
}
}

}
if(!textFound)
MessageBox.Show("Your message here");

ответил(а) 2021-01-19T12:22:42+03:00 2 месяца, 4 недели назад
44

Вы можете использовать регулярное выражение:

Regex.Match(line, @"\b(Error: 1|Warning: 1|Others)\b");

ответил(а) 2021-01-19T12:22:42+03:00 2 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема