2013-08-29 21 views
1

我想從string.i中刪除所有html標記,可以使用REGX實現此目的。如何刪除所有HTML標記並使用C#顯示純文本

但在字符串裏面,如果它包含在角括號內的數字< 100>它不應該刪除它。

  var withHtml = "<p>hello <b>there<1234></b></p>"; 
     var withoutHtml = Regex.Replace(withHtml, "\\<[^\\>]*\\>", string.Empty); 

結果:你好

,但需要輸出: 你好1234

+2

<1234>不是HTML標籤... – giammin

+0

是。但至REGx刪除<1234>也因爲brackects.I內的所要的號碼也可以顯示 – user2405818

+0

正則表達式不知道哪個是有效的HTML和不是。所以正則表達式不是這樣做的。考慮使用'HTMlAgilityPack' –

回答

0

不知道你可以在一個正則表達式做到這一點,或者說一個正則表達式是真的像別人有正確的方法建議。一個簡單的改進,讓你幾乎有:

Regex.Replace(withHtml, "\\<[^\\>0-9]*\\>", string.Empty); 

賦予「你好< 1234>」,那麼你只需要替換所有尖括號。

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – gislikonrad

0

您的HTML示例不是有效的HTML,因爲它包含非HTML標記。我想你打算爲角括號進行編碼。

我不認爲正則表達式適合HTML解析。我建議使用HTML解析器(例如HTML Agility Pack)來執行此操作。

下面是一個例子:

var withHtml = "<p>hello <b>there&lt;1234&gt;</b></p>"; 
var document = new HtmlDocument(); 
document.LoadHtml(withHtml); 

var withoutHtml = HtmlEntity.DeEntitize(document.DocumentNode.InnerText); 

只需添加HtmlAgilityPack NuGet包和的System.Xml的引用,使其工作。

相關問題