Поиск слова в нескольких текстовых файлах - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть папка с неизвестным (постоянно меняется) количеством текстовых файлов. Необходимо взять все файлы из этой папки и найти в содержимом этих файлов определенное слово. Слова в файлах имеют разделители в виде пробелов. Пожалуйста, подскажите что я делаю не так? Я совершенный нуб.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace ConsoleApplication2
{
    class Program
    {
 
        static void Main(string[] args)
        {
 
            var dir = @"D:\Programs\data\logs\of"; //Определяем директорию
            var contents = Directory.EnumerateFiles(dir, "*.txt") //Говорим с каким расширением читать файлы
            .Select(File.ReadAllLines).ToString();
            string a = contents;
            string b = "Type:15"; //Искомое слово
            char[] separators = { ' '}; //Cоздаём массив разделителей
            string[] words = a.Split(separators, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine("Совпадений не найдено!"); //Выводим если совпадений не найдено
            foreach (string word in words)
            {
                if (b.Equals(word))
                {
                    Console.WriteLine("Есть совпадение!"); //Выводим если совпадения найдены
                    break;
                }
            }
            Console.ReadKey();
 
        }
         
        }
        }

Решение задачи: «Поиск слова в нескольких текстовых файлах»

textual
Листинг программы
             string sourceDirectory = @"D:\Programs\data\logs\of"; //Определяем директорию
             foreach (var txtFiles in Directory.EnumerateFiles(sourceDirectory, "*.txt"))
            {
                Console.WriteLine(txtFiles);
                string[] lines = System.IO.File.ReadAllLines(txtFiles);
                int i = 0;
                string b = "Type:15"; //Искомое слово
                foreach (string line in lines)
                {
                    string[] var = lines[i].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);
                    i += 1;
                    foreach (string word in var)
                        if (b.Equals(word))
                    {
                        Console.WriteLine("Есть совпадение!"); //Выводим если совпадения найдены
                        break;
                    }
                }
            }
            Console.ReadKey();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы