2012-06-07 70 views
3

我有一個來自數據庫的任意字符串。我想把這個字符串作爲一個HTML類名稱放在一個網頁上。我不確定期望什麼字符。如何刪除空格和特殊字符以使其「安全」成爲CSS類名稱?安全的CSS類名稱的帶字符串?

經過一番研究,看來空間,這些字符需要被刪除:

!"#$%&'()*+,./:;<=>[email protected][\]^`{|}~ 

什麼是刪除它們的最好方法?

回答

4

你可能想看看this線程更好地瞭解有效的CSS的名字。

我推薦了一個如下的實用函數,您應該根據需要測試/更改正則表達式。

Regex re = new Regex(@"[!""#$%&'()\*\+,\./:;<=>\[email protected]\[\\\]^`{\|}~ ]"); 
string outputString = re.Replace(inputString, string.Empty); 
+0

這似乎沒有刪除空格,這怎麼調整? – TruMan1

+0

@ TruMan1 - 用正確的正則表達式語法更新了我的原始答案。必須轉義特殊字符([reference](http://www.regular-expressions.info/characters.html))。希望這可以幫助。 – Channs

+0

僅供參考,如果有人可能會發現它有用,這裏有相同的JavaScript正則表達式方法,修改後爲每個禁止字符的子序列插入破折號: var outputString = inputString.replace(/ [!「#$%&'( )\\ * \ +,\ ./ :; <=> \?@ \\ [\\\\] ^'{\ |}〜] +/g,' - '); –

0

您是嘗試System.IO.Path.GetInvalidFileNameChars篩選出特殊字符:

var tagName = "[email protected]@11~1298#bar"; 
    var invalidChars = System.IO.Path.GetInvalidFileNameChars(); 
    var cleanTagName = new string(tagName.Where(m => !invalidChars.Contains(m)).ToArray<char>()); 
+0

無效的文件名字符和無效的CSS類名稱字符不是等效的集合。例如,文件名中允許使用'+',但不允許使用CSS類名稱。 – Cody

相關問題