Проверка текста на определенные слова и посчитать их количество c#

Суть задачи: есть richtextbox. В каждом предложении текста может быть ключевое слово, или даже несколько раз повторяться одно и тоже слово (пример ключевых слов {"Интернет вещи", "Интернет вещей", "Интернет вещь"}). Требуется посчитать сколько раз каждое ключевое слово фигурировало в тексте, а если в некоторых предложениях одно и тоже ключевое слово употреблялось более 1 раза, то посчитать за 1 повторение. Вот код:

private void button1_Click(object sender, EventArgs e)
{
            string source = richTextBox1.Text;
            string word = textBox1.Text;
            int count = Regex.Matches(source, $"\\b{Regex.Escape(word)}\\b", RegexOptions.IgnoreCase).Count;
            MessageBox.Show("Количество: " + count);
}

Ответы (1 шт):

Автор решения: Qwerty Q

Самый простой способ поиска слова целиком - это использовать библиотеку Regex

bool result = Regex.IsMatch(text, "\\bслово\\b"); 

первый входной параметр - слово, второй - регулярное выражение

Также можно использовать метод MatchCollection.Count

string pattern = @"\d+";
      string[] inputs = { "This sentence contains no numbers.",
                          "123 What do I see?",
                          "2468 369 48 5" };
      foreach (var input in inputs) {
         MatchCollection matches = Regex.Matches(input, pattern);
         Console.WriteLine("Input: {0}", input);
         if (matches.Count == 0)
            Console.WriteLine("   No matches");
         else
            foreach (Match m in matches)
               Console.WriteLine("   {0} at index {1}", m.Value, m.Index);

         Console.WriteLine();
      }

Также упрощу вам задачу разделения всего текста из richtextbox на предложения.

string input = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Commodo sed egestas egestas fringilla!";

string[] sentences = Regex.Split(input, @"(?<=[\.!\?])\s+");

foreach (string sentence in sentences) {
  Console.WriteLine(sentence);
}

Возможно эти методы вам не подходят это всего лишь маленький пример из возможностей данной библиотеки, но если изучить библиотеку она поможет решить вашу задачу.

→ Ссылка