有誰知道一個算法(或外部庫),我可以調用將任意字符串(即在我的控制之外)轉換爲CLS兼容?如何將任意字符串轉換爲符合CLS的名稱?
我正在爲ASP.Net報表查看器控件生成動態RDLC(客戶端報表定義),並且某些字段名稱需要基於用戶輸入的字符串。
不幸的是,我很少控制客戶端輸入域名(通過第三方CMS)。但是我很需要創建兼容字符串所需的替換。
我有一個反應破解算法沿着現在的路線:
public static string FormatForDynamicRdlc(this string s)
{
//We need to change this string to be CLS compliant.
return s.Replace(Environment.NewLine, string.Empty)
.Replace("\t", string.Empty)
.Replace(",", string.Empty)
.Replace("-", "_")
.Replace(" ", "_");
}
但我喜歡的東西更全面。有任何想法嗎?
注意:如果它是任何幫助,我用來創建動態RDLC的算法是基於這裏找到BuildRDLC方法:http://csharpshooter.blogspot.com/2007/08/revised-dynamic-rdlc-generation.html
好的!什麼不能正則表達式:) – 2010-06-09 23:55:50
我認爲不允許使用符合CLS的名稱的前導下劃線。請參閱http://stackoverflow.com/a/1195061/1086134。另外請注意,如果您將上述算法應用於字符串集合,最終可能會得到一組非唯一名稱。 – 2013-10-18 19:19:24
@Martin_ATS你說得對。如何獲得一組獨特的名字?在'Guid.NewGuid()'運行時生成一個GUID字符串的名字,ToString()'解決了這個問題,但是在某些情況下,名字太長而不實用。 – 2016-11-25 16:34:22