У меня есть небольшой текстовый файл, содержащий три строки текста. Я пытаюсь создать программу на C#, которая получает слово от пользователя и ищет это слово в txt-файле. Если слово найдено, я хочу записать и показать, какие строки файла txt на нем было найдено. Переменная int position записывает, если слово найдено или нет, но я не могу понять, как записать, какие строки содержит слово. Как мне это сделать? Вот мой код:Поиск слова в текстовом файле в C#
class Program {
static void Main(string[] args) {
Console.Write("please enter a file to search for");
string fileResponse = Console.ReadLine();
Console.Write("please enter a word to search for in the file");
string wordResponse = Console.ReadLine();
StreamReader myfile = File.OpenText(fileResponse);
string line = myfile.ReadLine();
int position = line.IndexOf(wordResponse);
int count = 0; //counts the number of times wordResponse is found.
int lineNunmber = 0;
while (line != null) {
if (position != -1) {
count++;
}
line = myfile.ReadLine();
}
if (count == 0) {
Console.WriteLine("your word was not found!");
} else {
Console.WriteLine("Your word was found " + count + " times!" + position);
}
Console.ReadLine();
}
}
и что вопрос? – Backs
Ваш алгоритм специально подсчитывает количество строк, на которых оно найдено, а не количество экземпляров. Слово может отображаться 54 раза в одной строке и только один раз обнаруживать метод IndexOf(). Также вам нужно обновлять позицию каждый раз, когда вы проходите цикл while – Steve
Hi Steve, поэтому переменная int position подсчитывает количество строк, на которых находится слово? – Gabe