如何使用C#删除所有HTML标记并显示纯文本

时间:2013-08-29 09:41:46

标签: c# html

我想从string中删除所有html标签。我可以使用REGX来实现这一点。

但在字符串内部,如果它包含角括号内的数字< 100>它不应该删除它。

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

结果:你好

但需要输出: 你好1234

2 个答案:

答案 0 :(得分:0)

不确定是否可以在一个正则表达式中执行此操作,或者正则表达式正如其他人所建议的那样正确。几乎可以让你获得的简单改进是:

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

给那里&#34;你好&lt; 1234&gt;&#34;然后,您只需要更换所有有角度的支架。

答案 1 :(得分:0)

您的HTML示例无效HTML,因为它包含非HTML标记。我想你想要编码的尖括号。

我认为正则表达式不适合HTML解析。我建议使用HTML Agility Pack之类的HTML解析器来执行此操作。

以下是一个例子:

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的引用即可使其正常工作。