我需要枚舉類型來定義在項目中使用的字母。 .NET框架中是否有這樣的枚舉類型?.NET框架中的字母是否有枚舉類型?
回答
由於沒有可枚舉,一個快速的方法來產生一個枚舉(字符的IEnumerable的),其中包含一個字符集的所有字母...
var letters = Enumerable.Range(0, 255).Select(Convert.ToChar).Where(Char.IsLetter);
您可以用'或'方法組與IsDigit或IsPunctuation包含其他字母。
注意:這種方法存在限制和假設。檢查這些...
Unicode字符分爲多個類別。角色的 類別是其屬性之一。例如,字符可能是 大寫字母,小寫字母,十進制數字, 字母數字,連接符號,數學符號或貨幣 符號。 UnicodeCategory類返回Unicode 字符的類別。有關Unicode字符的更多信息,請參閱Unicode Standard。
來源:How to determine if a CultureInfo instance supports Latin characters
.NET框架使用的炭結構來表示一個Unicode字符 。 Unicode標準用每個Unicode字符標識一個稱爲代碼點的唯一21位標量數字,並定義了UTF-16編碼格式,該格式指定代碼點如何編碼爲一個或多個16位值的 序列。每個16位值的範圍從 十六進制0x0000到0xFFFF,並存儲在Char結構中。 Char對象的值是它的16位數字(有序)值。
來源:http://msdn.microsoft.com/en-us/library/System.Char(v=vs.110).aspx
您想到世界上常用的數百個字母中的哪一個?當然,這是一種磨擦。
最糟糕的問題是,即使在採用相同字母表的語言中,字母順序也不相同。例如,丹麥人首先代替了最後一個。一個枚舉的破壞屬性,它是不可能拿出一個枚舉,可以代表一個字母表。除非在世界的一小部分地區使用它,否則你的計劃不會走得太遠。在互聯網時代相當不可能。
請確保您不要試圖保留它char
。永遠不要忽視了System.StringComparison
訂單(整理)可能與他的使用無關。 (即使ASCII字符在不同的文化中也可能有不同的排序規則,例如西弗裏西亞語在'I'附近放置'Y',愛沙尼亞語在'S'附近放置'Z')。任何unicode字符都可以很容易地放入'Int32'中通過UTF-32)。當然,Unicode規範化將成爲一個問題。 –
我出生在那裏:) Y實際上是IJ的繃帶。並且通常用分音書寫,Ÿ。 –
這表明事情有多複雜。然而[立陶宛](http://en.wikipedia.org/wiki/Lithuanian_alphabet)也把'Y'放在'I'附近,我認爲他們的'Y'與荷蘭和弗里斯蘭語的'IJ'完全相同。現在,我是Dane :-),我們確實把'Å'放在最後,後三個字母是'Æ-Ø-Å'。不過瑞典語在字母表的末尾有「Å-Ä-Ö」的順序。 –
- 1. 在.net中是否有CSS媒體類型的系統枚舉?
- 2. 字符的.NET枚舉基類型
- 3. .NET枚舉類型有多個定義
- 4. 枚舉是否只在傳統集合框架類中工作?
- 5. 枚舉拋出「不是枚舉類型」
- 6. Node.js native枚舉中的枚舉類型
- 7. python是否支持枚舉類型?
- 8. 是否有可能在類中持有OrmLite的枚舉字段?
- 9. 是否有類似Python的枚舉linq
- 10. 如何刪除實體框架中的鑄造枚舉類型
- 11. 實體框架實體中枚舉類型的屬性?
- 12. 具有泛型類型的泛型枚舉枚舉
- 13. .Net是否有一個可用的字符枚舉
- 14. 類型枚舉
- 15. Perl有枚舉類型嗎?
- 16. .NET SqlClient錯誤號枚舉類型
- 17. .net枚舉blittable類型? (編組)
- 18. 與枚舉.NET類型ASMX POST對象
- 19. Ç枚舉(枚舉類型定義)的
- 20. 實體框架枚舉類SqlQuery結果
- 21. VBScript中的枚舉類型
- 22. 是否有客戶枚舉類型和系統枚舉類型之間的區別
- 23. 是否有一個持有運行時類型編碼字符的枚舉?
- 24. Java中有MIME類型的枚舉嗎?
- 25. 在枚舉中枚舉是否有一個通用的方法?
- 26. 是否可以動態枚舉VB .NET中的所有數組?
- 27. 是否可以確定某個類型是否是範圍枚舉類型?
- 28. 枚舉類型佈局是否與其基礎類型兼容?
- 29. 如何從所有枚舉類型中排除某些枚舉
- 30. 實體框架 - WCF - 枚舉?
你可能想看看這個答案:http://stackoverflow.com/questions/572963/why-we-cant-have-char-enum-types 簡短的答案是「否」,但字母也被稱爲CHAR,這是一個數字。所以你可以直接使用char而不是枚舉。 – Dorival
請注意,默認情況下,枚舉使用'System.Int32'作爲後備。您可以將其解釋爲UTF-32編碼的Unicode代碼點(當然,大多數值在Unicode範圍之外,但這不是問題)。請注意'char'結構(['System.Char'](http://msdn.microsoft.com/en-us/library/System.Char。aspx))具有可以使用的靜態方法'ConvertFromUtf32'和'ConvertToUtf32'。如果你所有的Unicode字符都在[BMP(平面0)](http://en.wikipedia.org/wiki/Basic_Multilingual_Plane)中,那麼它更加簡單:只需在'char'中輸入和輸出。雖然要小心正常化。 –