The Magical Magikarp Ответов: 1

Как искать строки/слова кодировки C#в файле? С#


Привет :) Мне нужно найти все ключевые слова C#в файле(любой файл, не имеет значения) и отобразить все вхождения в RichTextBox.

Например: пользователь нажимает кнопку, и появляется OpenFileDialog.(Я уже сделал эту часть) -затем, после нажатия кнопки OK, с файлом по их выбору, он будет читать все строки/текст в файле, и извлекать все вхождения C#-ключевых слов, и отображать извлеченные вхождения в RichTextBox.

Есть идеи, как мне это сделать?

-Я не имею в виду: "Найди первое вхождение!", я имею в виду: "Найди все вхождения!"

Любая помощь будет высоко оценена :)

Что я уже пробовал:

Я случайно удалил свой нерабочий код :)

1 Ответов

Рейтинг:
9

RickZeeland

Вот простой пример, чтобы вы начали, он печатает номера строк и текст строк:

this.FindWords("test.txt", "private");

private void FindWords(string fileName, string searchString)
{
    string line;
    int count = 1;

    using (TextReader reader = File.OpenText(fileName))
    {
        while ((line = reader.ReadLine()) != null)
        {
            if (line.Contains(searchString))
            {
                Console.WriteLine(count + " " + line);
            }

            count++;
        }
    }
}

Было бы неплохо улучшить это с помощью Регулярное выражение поисковые выражения, вот хороший пример регулярного выражения (не бойтесь, что он направлен на то, чтобы убрать сложность регулярного выражения):
Преобразование подстановочных знаков в регулярные выражения[^]

Другая идея состояла бы в том, чтобы использовать быстрое цветное текстовое поле, так как стандартное RichTextBox действительно хлопотно использовать: Быстрое цветное текстовое поле для подсветки синтаксиса[^]


GKP1992

Мне нравится, как вы дали им решение, но все же оставили некоторые вещи для них, чтобы выяснить.
+5

The Magical Magikarp

Мне очень понравился ваш ответ, но он не полностью ответил на мой вопрос. Я использовал ваше решение, и оно нашло ключевое слово "интерфейс", но напечатало всю строку, когда должно было напечатать все вхождения "интерфейса", а не только одну строку :)

RickZeeland

Лентяй :)
тогда взгляните на https://www.dotnetperls.com/indexof

The Magical Magikarp

Ну, спасибо! :)