Проверка текста на определенные слова и посчитать их количество 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 шт):
Самый простой способ поиска слова целиком - это использовать библиотеку 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);
}
Возможно эти методы вам не подходят это всего лишь маленький пример из возможностей данной библиотеки, но если изучить библиотеку она поможет решить вашу задачу.