[英]How to check if a String is a valid name for a FrameworkElement in WPF?
在我的代碼中,我將一個String分配給FrameworkElement的name屬性 。 此String是從應用程序的另一部分自動生成的,表示Java源代碼中的方法名稱,因此我想檢查它是否包含有效名稱。
目前我這樣做:
private string getValidName(String s)
{
return s.Replace("<", "").Replace(">", "").Replace("#", "").Replace("(", "").Replace(")", "").Replace(",", "").Replace(".", "").Replace("$", "").Replace(" ", "");
}
但問題是我不知道要替換哪些字母。 例如,在這個代碼中[和]丟失了,因為當我遇到異常時我發現了。
所以我的問題是。 是否有允許符號列表? 如果是,我該如何以合理的方式實現這一點?
恕我直言,最實用的方法是用下划線替換不是[az][AZ][0-9]
,並在前面添加下划線。 有了這個,您可以將任意字符串更改為有效的標識符。
我知道這並沒有完全回答你的問題,但我認為仍然值得考慮。
您可以使用以下代碼實現此目的:
var result = "_" + Regex.Replace(input, @"[^a-zA-Z0-9]", "_");
為了避免潛在的重復,我還會考慮用唯一的東西替換無效字符的每個出現,例如,UTF-8編碼中的十六進制表示:
Regex.Replace( s, @"[^a-zA-Z0-9]",
m => {
var bytes = Encoding.UTF8.GetBytes( m.Value );
var hexs = bytes.Select( b => string.Format( "_{0:x2}", b ) );
return String.Concat( hexs );
} );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.