Поиск строки, чтобы увидеть, если слово встречается более одного раза - PullRequest
0 голосов
/ 01 июня 2018

Мне нужно проверить, содержится ли данное слово в строке внутри пути, и распечатать его.Вот мой код:

using (StreamReader reading = new StreamReader(path))
{
   string user= Console.ReadLine();
   string line = user;
   Console.WriteLine();
   while ((line = reading.ReadLine()) != null)
   {
       if (line.Contains(user))
       {
          Console.WriteLine(line);
       }
    }
 }

Это работает, но если в потоке слово встречается дважды, в качестве выходных данных выдаются две строки.Как я могу проверить, найдено ли слово дважды?

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

поместите ваш подсчет вне времени, как это:

int count = 0;
    string line = null;
    while ((line = reading.ReadLine()) != null)
    {
        if (line.Contains(user))
        {
            count++;
        }
    }
    if (count > 0)
    {
        Console.WriteLine(user +" found " + count +" time");
    }
    else
    {
        Console.WriteLine(user + " not found!");
    }
0 голосов
/ 01 июня 2018

Если вы просто хотите отобразить строки с пользователем и отобразить общее количество строк, содержащих user, вы можете легко сделать это с помощью некоторого LINQ:

var linesWithUser = File.ReadLines(filePath).Where(x => x.Contains(user)).ToList();

//Prints the count
Console.WriteLine(linesWithUser.Count);

//Prints all the lines that contain the user, maybe do other things...
foreach(var line in linesWithUser)
{
    Console.WriteLine(line);
}
0 голосов
/ 01 июня 2018

Примерно так:

bool ContainsWordMultipleTimes(string word, string input)
{
    var regex = new Regex(string.Format(@"\b{0}\b", word), 
                          RegexOptions.IgnoreCase);
    return regex.Matches(input).Count > 1;
}

Или даже расширить string вот так:

public static class StringWordsExtensions
{
    public static bool ContainsMultipleTimes(this string input, string word)
    {
        var regex = new Regex(string.Format(@"\b{0}\b", word),
                              RegexOptions.IgnoreCase);
        return regex.Matches(input).Count > 1;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...