在HTML文件中查找字符串的确切出现位置

时间:2012-01-10 17:52:59

标签: c# regex html-agility-pack

我想找到字符串的完全匹配计数 假设字符串是“我的电脑”。我想找到它,在字符串中出现

这是我的电脑,这是一台好电脑,这是我的电脑,这是我的电脑

所以最后我会得到第2个,

我尝试使用'mykeyWord'作为字符串找到以下公式。

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

但它也会计算像'my Computers'这样的字符串错误。

3 个答案:

答案 0 :(得分:4)

这是使用正则表达式的理想场所,就像您标记帖子一样:

Regex re = new Regex("\\b" + Regex.Escape(mykeyWord) + "\\b", RegexOptions.IgnoreCase);
int count = re.Matches(innerDocument.DocumentNode.InnerText).Count;

答案 1 :(得分:1)

您可以使用正则表达式[^A-z](my computer)[^A-z]这匹配“​​我的电脑”,但不是“A到Z”之前或之后。要使正则表达式搜索不区分大小写,请使用RegexOptions.IgnoreCase

修改 minitech使用单词边界的答案更好。

答案 2 :(得分:1)

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;
    }