從HTML字符串獲取純文本字符串的最佳方法是什麼?從.NET中以HTML格式獲取純文本
public string GetPlainText(string htmlString)
{
// any .NET built in utility?
}
在此先感謝
從HTML字符串獲取純文本字符串的最佳方法是什麼?從.NET中以HTML格式獲取純文本
public string GetPlainText(string htmlString)
{
// any .NET built in utility?
}
在此先感謝
有公用事業沒有內置據我所知,但根據您的需求,您可以使用正則表達式去掉所有的標籤:
string htmlString = @"<p>I'm HTML!</p>";
Regex.Replace(htmlString, @"<(.|\n)*?>", "");
/我去隱藏 – 2011-05-03 13:52:07
檢查這個史詩般的問題http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml- self-contained-tags – Andrey 2011-05-03 13:57:11
@Andrey哈哈這是一個非常棒的接受答案。幸運的是,OP沒有說明確切的需求,也沒有定義HTML字符串,因此它應該能夠捕捉大多數實際的HTML情況,而不是XHTML。 – 2011-05-03 14:00:08
沒有.NET內置的方法來做到這一點。但是,就像@rudi_visser指出的那樣,它可以用正則表達式完成。
如果您需要刪除的不僅僅是更多的標籤(即轉&ampacirc;到â),你可以使用更詳盡的解決方案,如發現here。
框架中沒有內置的解決方案。
如果您需要解析HTML,我使用名爲HTML Agility Pack的庫提供了很好的體驗。
它分析一個HTML文件並提供DOM的訪問權限,類似於XML類。
你可以使用MSHTML,它可以相當寬容;嶺
//using microsoft.mshtml
HTMLDocument htmldoc = new HTMLDocument();
IHTMLDocument2 htmldoc2 = (IHTMLDocument2)htmldoc;
htmldoc2.write(new object[] { "<p>Plateau <i>of<i> <b>Leng</b><hr /><b erp=\"arp\">2 sugars please</b> <xxx>what? & who?" });
string txt = htmldoc2.body.outerText;
高原2個糖討好什麼? &誰?
工程就像一個魅力!應該是被接受的答案。請注意,您需要首先添加對「Microsoft.mshtml.dll」的引用。 – 2016-07-05 14:09:36
您確定此方法對來自不受信任來源的HTML安全嗎? HTMLDocument.Write()是否執行傳遞的腳本? – 2016-11-16 17:20:12
這個答案比接受的答案(只使用簡單的正則表達式去除標籤)要穩健得多,而且對於任何合理複雜的頁面來說可能都是必要的。 – 2016-11-16 22:00:27
就我個人而言,我發現正則表達式和HttpUtility的組合是最好的和最短的解決方案。
Return HttpUtility.HtmlDecode(
Regex.Replace(HtmlString, "<(.|\n)*?>", "")
)
這將刪除所有的標籤,然後解碼任何類似<
或>
的羣衆演員,你有什麼用純文本意思? – slandau 2011-05-03 13:48:38
@slandau:我想從HTML輸入中輸出可讀的文本。我不知道是否有額外的刪除標籤... – 2011-05-03 13:52:11