繁体   English   中英

如何确保C#WebBrowser控件中搜索的文本是实际文本,而不是元素或属性?

[英]How to make sure searched text in a C# WebBrowser control is actual text and not an element or attributes?

如果有人仍然可以回答这个问题,我将在此处保留,但我将走另一条路线进行搜索

我知道这里有几个类似的问题,但是没有一个让我明白我要去的地方。

我的搜索部分基本完成。 它工作得很漂亮。 获取所有出现的搜索词或短语,忽略大小写。 但是问题是,如果您要搜索“ div”或“表”或某个其他单词(即html元素名称或属性值),则搜索会试图突出显示该单词,从而完全破坏了页面。

因此,我真的只需要一种简单的方法来确保搜索忽略这些情况。 这就是我所拥有的。 我认为我可能需要一个非常好的正则表达式,但是我不能编写一个正则表达式来挽救生命,因此我们将不胜感激。

private void PerformSearch()
{
  string searchString = SearchTextBox.Text;
  HtmlDocument doc = ManualViewBrowser.Document;
  StringBuilder html = new StringBuilder(doc.Body.InnerHtml);

  doc.Body.InnerHtml = Regex.Replace(html.ToString(), searchString, new MatchEvaluator(Highlight), RegexOptions.IgnoreCase);
}

private string Highlight(Match m)
{
  return "<em class=\"highlight\">" + m.Value + "</em>";
}

只需使用以下方法从该html字符串中删除所有html标签:

private string RemoveHtmlTags(string html) {
  return Regex.Replace(html, "<.*?>", String.Empty);
}

编辑:

您是对的,因此与其在html中进行搜索,还不如遍历页面的所有节点并在其中搜索单词。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM