標籤:var class server 刪除 字串 serve 使用者 code ble
因為用到了一款編輯器的原因,使得資料庫中儲存的資料會夾雜著一些HTML標籤,之後匯出的資料中就會出現一些不同的HTML的標籤。嚴重影響使用者的視覺體驗(主要自己都看不下去了)。。。
下面是我將DataTable進行重新組裝,清除HTML標籤的方法:
1 /// <summary> 2 /// 重新組裝DataTable(主要是為了清除DataTable資料中的HTML標籤) 3 /// </summary> 4 /// <param name="new_dt">DataTable</param> 5 /// <param name="parms">列名(可以是多個列),如"name","age"</param> 6 /// <returns>組裝後的DataTable</returns> 7 public DataTable GetNewTable(DataTable new_dt, params object[] parms) 8 { 9 Func<object, string> fnClearHtml = (object obj) =>//清除HTML標籤函數10 {11 var HtmlStr = obj + "";12 //刪除指令碼13 HtmlStr = HtmlStr.Replace("\r\n", "");14 HtmlStr = Regex.Replace(HtmlStr, @"<script.*?</script>", "", RegexOptions.IgnoreCase);15 HtmlStr = Regex.Replace(HtmlStr, @"<style.*?</style>", "", RegexOptions.IgnoreCase);16 HtmlStr = Regex.Replace(HtmlStr, @"<.*?>", "", RegexOptions.IgnoreCase);17 //刪除HTML18 HtmlStr = Regex.Replace(HtmlStr, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);19 HtmlStr = Regex.Replace(HtmlStr, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);20 HtmlStr = Regex.Replace(HtmlStr, @"-->", "", RegexOptions.IgnoreCase);21 HtmlStr = Regex.Replace(HtmlStr, @"<!--.*", "", RegexOptions.IgnoreCase);22 HtmlStr = Regex.Replace(HtmlStr, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);23 HtmlStr = Regex.Replace(HtmlStr, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);24 HtmlStr = Regex.Replace(HtmlStr, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);25 HtmlStr = Regex.Replace(HtmlStr, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);26 HtmlStr = Regex.Replace(HtmlStr, @"&(nbsp|#160);", "", RegexOptions.IgnoreCase);27 HtmlStr = Regex.Replace(HtmlStr, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);28 HtmlStr = Regex.Replace(HtmlStr, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);29 HtmlStr = Regex.Replace(HtmlStr, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);30 HtmlStr = Regex.Replace(HtmlStr, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);31 HtmlStr = Regex.Replace(HtmlStr, @"&#(\d+);", "", RegexOptions.IgnoreCase);32 HtmlStr = HtmlStr.Replace("<", "");33 HtmlStr = HtmlStr.Replace(">", "");34 HtmlStr = HtmlStr.Replace("\r\n", "");35 HtmlStr = HttpContext.Current.Server.HtmlEncode(HtmlStr).Trim();36 return HtmlStr;37 };38 if (new_dt != null)39 {40 foreach (var p in parms)41 {42 var pp = p + "";43 new_dt.Columns.Add(p + "1", typeof(string));44 foreach (DataRow dr in new_dt.Rows)45 dr[p + "1"] = fnClearHtml(dr[pp]);46 47 new_dt.Columns.Remove(pp);48 new_dt.Columns[p + "1"].ColumnName = pp;49 }50 }51 return new_dt;52 }
其中fnClearHtml函數就是專門清除HTML標籤的函數,但是小主在寫下面刪除列的時候發現 new_dt.Columns.Remove(pp)這句代碼只是刪除該列的資料以及該列的名字,這個列還會以Column1或Column2等其他的名稱出現,列的總數還是那麼多。。。
希望看到小主文言文的大神,能給小主一些解答。
小主感激不盡。。。。
C#怎麼清除字串中HTML標籤。。。