因为用到了一款编辑器的原因,使得数据库中保存的数据会夹杂着一些HTML标签,之后导出的数据中就会出现一些不同的HTML的标签。严重影响用户的视觉体验(主要自己都看不下去了)。。。
下面是我将DataTable进行重新组装,清除HTML标签的方法:
- /// <summary>
- /// 重新组装DataTable(主要是为了清除DataTable数据中的HTML标签)
- /// </summary>
- /// <param name="new_dt">DataTable</param>
- /// <param name="parms">列名(可以是多个列),如"name","age"</param>
- /// <returns>组装后的DataTable</returns>
- public DataTable GetNewTable(DataTable new_dt, params object[] parms)
- {
- Func<object, string> fnClearHtml = (object obj) =>//清除HTML标签函数
- {
- var HtmlStr = obj + "";
- //删除脚本
- HtmlStr = HtmlStr.Replace("\r\n", "");
- HtmlStr = Regex.Replace(HtmlStr, @"<script.*?</script>", "", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"<style.*?</style>", "", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"<.*?>", "", RegexOptions.IgnoreCase);
- //删除HTML
- HtmlStr = Regex.Replace(HtmlStr, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"-->", "", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"<!--.*", "", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(nbsp|#160);", "", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
- HtmlStr = Regex.Replace(HtmlStr, @"&#(\d+);", "", RegexOptions.IgnoreCase);
- HtmlStr = HtmlStr.Replace("<", "");
- HtmlStr = HtmlStr.Replace(">", "");
- HtmlStr = HtmlStr.Replace("\r\n", "");
- HtmlStr = HttpContext.Current.Server.HtmlEncode(HtmlStr).Trim();
- return HtmlStr;
- };
- if (new_dt != null)
- {
- foreach (var p in parms)
- {
- var pp = p + "";
- new_dt.Columns.Add(p + "", typeof(string));
- foreach (DataRow dr in new_dt.Rows)
- dr[p + ""] = fnClearHtml(dr[pp]);
- new_dt.Columns.Remove(pp);
- new_dt.Columns[p + ""].ColumnName = pp;
- }
- }
- return new_dt;
- }
其中fnClearHtml函数就是专门清除HTML标签的函数,但是小主在写下面删除列的时候发现 new_dt.Columns.Remove(pp)这句代码只是删除该列的数据以及该列的名字,这个列还会以Column1或Column2等其他的名称出现,列的总数还是那么多。。。
希望看到小主文言文的大神,能给小主一些解答。
小主感激不尽。。。。
以上就是C#怎么清除字符串中HTML标签。。。的详细内容,更多关于C#怎么清除字符串中HTML标签。。。的资料请关注九品源码其它相关文章!