Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保在C#WebBrowser控件中搜索的文本是实际文本,而不是元素或属性?_C#_Html_Webbrowser Control - Fatal编程技术网

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

如何确保在C#WebBrowser控件中搜索的文本是实际文本,而不是元素或属性?,c#,html,webbrowser-control,C#,Html,Webbrowser Control,我将把这个留在这里,以防任何人仍然可以回答这个问题,但我将采用不同的搜索路线 我知道这里有几个问题是相似的,但没有一个能告诉我我要去哪里 我已经基本完成了搜索部分。它工作得很好。获取所搜索单词或短语的所有匹配项,忽略大小写。但问题是,如果要搜索“div”或“table”或其他一些作为html元素名称或属性值的单词,那么搜索也会试图突出显示它们,并完全破坏页面 所以我真的需要一个简单的方法来确保搜索忽略这些事件。这是我的。我想我可能需要一个非常好的正则表达式,但我不能写一个正则表达式来拯救我的生命

我将把这个留在这里,以防任何人仍然可以回答这个问题,但我将采用不同的搜索路线

我知道这里有几个问题是相似的,但没有一个能告诉我我要去哪里

我已经基本完成了搜索部分。它工作得很好。获取所搜索单词或短语的所有匹配项,忽略大小写。但问题是,如果要搜索“div”或“table”或其他一些作为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>";
}
private void PerformSearch()
{
string searchString=SearchTextBox.Text;
HtmlDocument文档=手动视图浏览器.Document;
StringBuilder html=新的StringBuilder(doc.Body.InnerHtml);
doc.Body.InnerHtml=Regex.Replace(html.ToString(),searchString,new MatchEvaluator(高亮显示),RegexOptions.IgnoreCase);
}
专用字符串高亮显示(匹配m)
{
返回“+m.值+”;
}

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

private string RemoveHtmlTags(string html) {
  return Regex.Replace(html, "<.*?>", String.Empty);
}
private string RemoveHtmlTags(字符串html){
返回Regex.Replace(html,“,String.Empty);
}
编辑:


你是对的,因此,与其在html中搜索,不如在页面的所有节点中循环搜索,然后在其中搜索单词。

我知道你要搜索什么,但我需要将它们全部放回去。这只是为了突出显示网页上的单词。这需要一个第三方库,不是吗?我想是的,但为什么不通过javascript呢?使用jquery会更容易。。如果你需要支持,请告诉我!如果我不能这样做,我可能会走那条路。