簡體   English   中英

如何檢查String是否是WPF中FrameworkElement的有效名稱?

[英]How to check if a String is a valid name for a FrameworkElement in WPF?

在我的代碼中,我將一個String分配給FrameworkElementname屬性 此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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM