Найти точное вхождение строки в HTML-файл - PullRequest
2 голосов
/ 10 января 2012

Я бы хотел найти количество точных совпадений строки Предположим, что строка «Мой компьютер». Я хочу найти его в строке

Это мой компьютер, это хороший компьютер,
это мой компьютер, это мои компьютеры

Итак, в конце я получу счет 2,

Я пробовал следующую формулу с 'mykeyWord' в качестве строки для поиска.

int strength = (innerDocument.DocumentNode.InnerText.Length - innerDocument.DocumentNode.InnerText.ToLower().Replace(mykeyWord.ToLower(), "").Length) / mykeyWord.Length;

Но он также будет считать неправильные строки типа «Мои компьютеры».

Ответы [ 3 ]

4 голосов
/ 10 января 2012

Это идеальное место для использования регулярных выражений, так же как вы отметили свой пост:

Regex re = new Regex("\\b" + Regex.Escape(mykeyWord) + "\\b", RegexOptions.IgnoreCase);
int count = re.Matches(innerDocument.DocumentNode.InnerText).Count;
1 голос
/ 10 января 2012
int FindCount(string keyword, string input)
    {
        if (input.Contains(keyword))
        {
            int count = 0;
            int i = 0;
            foreach (var c in input)
            {
                if (c == keyword[i])
                    i++;
                else
                    i = 0;
                if (i == keyword.Length)
                {
                    i = 0;
                    count++;
                }
            }
            return count;
        }

        return 0;
    }
1 голос
/ 10 января 2012

Вы можете использовать регулярное выражение [^A-z](my computer)[^A-z] Это соответствует «моему компьютеру», но не если это до или после «от А до Я».Чтобы сделать поиск в регулярном выражении без учета регистра, используйте RegexOptions.IgnoreCase.

Редактировать Ответ Минитеха с использованием границ слов лучше.

...