在C#字符串中搜索特定文本的HTML并标记文本的最佳方法是什么?

时间:2009-01-19 04:12:51

标签: c# html string

在C#字符串变量中搜索HTML以查找特定单词/短语并用突出显示标记(或换行)该单词/短语的最佳方法是什么?

谢谢,

杰夫

6 个答案:

答案 0 :(得分:8)

我喜欢使用Html Agility Pack非常容易使用,虽然最近没有太多更新,它仍然可用。例如抓住所有链接

HtmlWeb client = new HtmlWeb();
HtmlDocument doc = client.Load("http://yoururl.com");            
HtmlNodeCollection Nodes = doc.DocumentNode.SelectNodes("//a[@href]");         

foreach (var link in Nodes)
{                
    Console.WriteLine(link.Attributes["href"].Value);
}

答案 1 :(得分:1)

正则表达将是我的方式。 ;)

答案 2 :(得分:1)

如果您使用的是符合XHTML标准的HTML,您可以将其作为XML文档加载,然后使用XPath / XSL - 长篇大论但又有点优雅?

我过去使用的方法是使用HTMLTidy将凌乱的HTML转换为XHTML,然后使用XSL / XPath将内容屏幕抓取到数据库中,以创建反向内容管理系统。

正则表达式可以做到这一点,但是一旦你试图剥离标签,图片名称等以消除误报,可能会很复杂。

答案 3 :(得分:1)

在简单的情况下,正则表达式会这样做。

string input =“ttttttgottttttt”;
string output = Regex.Replace(input,“go”,“< strong> $ 0< / strong>”);

将产生:“tttttt< strong> go< / strong> ttttttt”

但是当你说HTML时,如果你指的是最终的文字呈现,那就有点乱了。假设你有这个HTML:

< span class =“firstLetter”> B< / span> ook

要突出显示“预订”一词,您需要正确的HTML渲染器帮助。为了简化,可以先删除所有标签,只留下内容,然后进行常规替换,但感觉不对。

答案 4 :(得分:1)

您可以查看使用SourceForge.net上的开源项目Html DOM。 这样,您可以以编程方式操作文本,而不是依赖正则表达式。

答案 5 :(得分:0)

搜索字符串时,您需要查找正则表达式。至于标记它,一旦你有了子串的位置,它应该足够简单,可以用它来添加一些东西来包围这个短语。