2011-08-22 80 views
0

我需要爲一段html文本生成一段摘錄,我不能僅使用Substring方法,因爲我可能正在修剪一個標籤,是否有一個函數將標籤放入考慮,所以它跳過,直到標籤結束?修剪html文本c#的一部分,但不修剪html標籤

+1

你能舉個例子說明你在找什麼。也許是「之前」和「之後?」 – ckittel

回答

1

沒有 「功能」 做你想做的事,您必須使用HTML解析器(例如Russ C建議的解析器)並迭代所有節點。

請,請請do not try with regular expressions(我只是在這裏主動)。

+0

+1「不要試用正則表達式」 – martin

0

一個例子將有助於ckittel聲明..如果我確實得到你的問題沒有這樣的內置功能。

根據您的需求,以及那種你正在處理的HTML,你可以與剝離從你的文字的HTML標記和解碼HTML實體簡單的基於正則表達式的方法做:

public static string StripHTML(string HTMLText) 
{ 
    string ret = HTMLText.Replace("<br>", "\n").Replace("<br />", "\n"); 
    Regex reg = new Regex("<[^>]+>", RegexOptions.IgnoreCase); 
    return HttpUtility.HtmlDecode(reg.Replace(ret, "")); 
} 

如果您喜歡的東西下面的代碼測試此代碼..

string longHtmlText = "<html>This is a &quot;<b>long &amp; bolded</b> <a href=\"http://en.wikipedia.org/wiki/HTML\">HTML</a> text</html>&quot;"; 
string excerpt = StripHTML(longHtmlText); 
excerpt = excerpt.Substring(0, 30) + "(..)"; 

..the結果將是..

這是一個「長&加粗的HTML(..)

..應該回答你的問題。

請記住,正如Albireo注意到的,Regex不是HTML解析...但如果您需要快速HTML剝離和修剪(對於簡單的HTML文本),無需外部組件,此代碼可能已足夠。