C# 用省略号截断字符串,确保不破坏任何HTML实体

C# 用省略号截断字符串,确保不破坏任何HTML实体,c#,asp.net,string,xhtml,truncate,C#,Asp.net,String,Xhtml,Truncate,我有一个包含XHTML内容的项目数据库,我想用HTML剥离(完成)来显示项目,然后将每个项目截断为最大100个字符的长度。如果字符串超过100个字符,我将其截断并插入&hellip(省略号)在末尾 问题是我的程序不理解字符串中已有的HTML实体。例如,如果字符串是something&;something,我的函数可能会将其截断为something&am…,从而导致XHTML无效 在ASP.NET/C#中解决此问题的最佳方法是什么?您可以使用它将html实体转换为普通字符串,然后截断此字符串

我有一个包含XHTML内容的项目数据库,我想用HTML剥离(完成)来显示项目,然后将每个项目截断为最大100个字符的长度。如果字符串超过100个字符,我将其截断并插入
&hellip(省略号)在末尾

问题是我的程序不理解字符串中已有的HTML实体。例如,如果字符串是
something&;something
,我的函数可能会将其截断为
something&am…
,从而导致XHTML无效

在ASP.NET/C#中解决此问题的最佳方法是什么?

您可以使用它将html实体转换为普通字符串,然后截断此字符串,最后对结果进行编码:

var decoded = HttpUtility.HtmlDecode(theEncodedString);
decoded = Truncate(decoded);
var result = HttpUtility.HtmlEncode(decoded);

您可以使用正则表达式匹配HTML实体或单个字符,并重复到所需的长度。比如:

^(&\w+;|.){,100}