在C#字符串变量中搜索HTML以查找特定单词/短语并用突出显示标记(或换行)该单词/短语的最佳方法是什么?
谢谢,
杰夫
答案 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)
搜索字符串时,您需要查找正则表达式。至于标记它,一旦你有了子串的位置,它应该足够简单,可以用它来添加一些东西来包围这个短语。