簡體   English   中英

在C#字符串中搜索特定文本的HTML並標記文本的最佳方法是什么?

[英]What is the best way to search through HTML in a C# string for specific text and mark the text?

在C#字符串變量中搜索HTML以查找特定單詞/短語並用突出顯示標記(或換行)該單詞/短語的最佳方法是什么?

謝謝,

傑夫

我喜歡使用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);
}

正則表達將是我的方式。 ;)

如果你正在使用符合XHTML的HTML,你可以將它作為XML文檔加載,然后使用XPath / XSL - 長篇大論但又有點優雅?

我過去使用的一種方法是使用HTMLTidy將凌亂的HTML轉換為XHTML,然后使用XSL / XPath將內容屏幕抓取到數據庫中,以創建反向內容管理系統。

正則表達式會這樣做,但是一旦你嘗試剝離標簽,圖像名稱等以消除誤報,它可能會很復雜。

在簡單的情況下,正則表達式就可以。

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渲染器幫助。 為了簡化,可以先刪除所有標簽,只留下內容,然后進行常規替換,但感覺不對。

您可以使用Html DOM ,這是SourceForge.net上的一個開源項目。 這樣,您可以以編程方式操作文本,而不是依賴正則表達式。

搜索字符串時,您需要查找正則表達式。 至於標記它,一旦你有子串的位置,它應該足夠簡單,使用它來添加一些東西來包裹短語。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM