清除字串中的HTML標籤利用RegExp 原始碼乾淨版
- 2010-09-26
- 12471
- 0
之前 demo 已經有不少篇說明如何將HTML 標籤清除掉的文章了【清除字串中的HTML標籤利用RegExp】【清除字串中的HTML標籤利用RegExp 進階版】這兩種清法在頁面呈現上感覺都一樣,但是開啟原始碼的時候就可以看到其實是包含了一堆空白與斷行符號,因為最近有要將這些清除掉 HTML 標籤的字串存回資料庫的需求,所以 demo 使用了上述的作法後發現資料庫存入的字串實在太髒太醜了,因此再加強了一版,讓原始碼看起來乾淨一點。
首先就是直接看網頁的呈現效果
為了方便觀看所以有使用HTML Encode 。
再來看看原始碼長啥樣子
看得出來後來的寫法原始碼是漂亮許多的,再來看看 Code 怎麼寫的吧。
public static string MakePlainText(this string x) { string filterString = x == null ? "" : x.Trim(); if (!string.IsNullOrWhiteSpace(filterString)) { filterString = filterString.Replace(Environment.NewLine, "₪"); filterString = new Regex(@"<[^>]*>").Replace(filterString, ""); filterString = new Regex(@"\s{2,}").Replace(filterString, ""); return new Regex(@"[₪]+").Replace(filterString, "<br />"); } return filterString; }
這是一個 string 的擴充方法,而且是使用 .NET 4.0 寫的,如果你不是使用 .NET 4.0 請將 string.IsNullOrWhiteSpace 換成 string.IsNullOrEmpty 即可,其中利用多次置換的方式將兩次以上的空白置換成一次的空白,這樣子可以減少許多的無意義空白產生,因為是要存入資料庫的因此 demo 將斷行符號改成 HTML 標籤的斷行符號(資料庫有斷行就不好複製資料),如果你想要保留空隔,可以將filterString = new Regex(@"\s{2,}").Replace(filterString, "");註解掉,或是利用傳入參數的方式來動態決定是否要保留空白,因 demo 的文章都是自己的需求所產生的,當你的需求與我不同的時候多多少少會不適用,我也不可能幫各位想出所有可能的事情,因為我一直認為看完文章以後應該只是提供一個思考方向,如果只是想要複製貼上就可以用,那就間接的抹煞了自己的思考能力了也不是 demo 寫文的本意。
以上就是再次加強的過濾 HTML 標籤的寫法,如果還有更好的方式歡迎留言告知與討論。
回應討論