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

发布于 2024-12-26 13:15:18 字数 384 浏览 0 评论 0原文

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

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

所以最后我将得到 Count 2 ,

我尝试了以下公式 ' mykeyWord' 作为要查找的字符串。

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

但它也会计算像“我的电脑”这样的错误字符串。

I would like to find the count of Exact match of string
Let suppose string is 'My Computer'. I want to find it,s occurrence in string

This is My computer,this is a good Computer,
this is my Computer,this is my Computers

So at end I shall get Count 2 ,

I have tried the following formula with 'mykeyWord' as string to be found.

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

But it will also count strings like 'my Computers' that is wrong.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

も让我眼熟你 2025-01-02 13:15:18

这是使用正则表达式的完美位置,就像您标记帖子一样:

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

This is a perfect place to use regular expressions, just as you tagged your post:

Regex re = new Regex("\\b" + Regex.Escape(mykeyWord) + "\\b", RegexOptions.IgnoreCase);
int count = re.Matches(innerDocument.DocumentNode.InnerText).Count;
半世蒼涼 2025-01-02 13:15:18

您可以使用正则表达式[^Az](我的电脑)[^Az] 这会匹配“我的电脑”,但如果它位于“A to Z”之前或之后则不匹配。要使正则表达式搜索不区分大小写,请使用RegexOptions.IgnoreCase。

编辑
minitech 使用单词边界的答案更好。

You could use the regular expression [^A-z](my computer)[^A-z] This matches 'my computer' but not if it's before or after 'A to Z'. To make the regex search case insensitive use RegexOptions.IgnoreCase.

Edit
minitech's answer using word boundaries is better.

小巷里的女流氓 2025-01-02 13:15:18
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;
    }
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;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文