获取所有字母字符的数组
本文关键字:字符 数组 获取 | 更新日期: 2023-09-27 17:56:29
可能的重复项:
来自 Enumerable.Range 的字符列表 A 到 Z
有没有一种简单的方法可以获取所有字母字符的char[]
?
我知道我可以做这样的事情:
char[] alphas = new char[]{'a', 'b', 'c', 'd', ..............};
对于所有大写和小写字符,但我想知道是否有更简单(且看起来更干净)的方法可以做到这一点。
也许是这样的:
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char [] alphas = (alphabet + alphabet.ToLower()).ToCharArray();
Enumerable.Range((Int32)'A', 2 * 26).Select(c => (Char)c).ToArray();
Uppps,不起作用 - Z 和 a 之间有一些非字母。
Enumerable.Range((Int32)'A', 26)
.SelectMany(c => new [] { (Char)c, (Char)(c + 'a' - 'A' })
.ToArray();
这解决了第一次尝试的问题,但这并不是真正干净。另请注意,此方法将交错大写和小写字母。我可能会坚持以下解决方案。
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToArray()
或者最好首先尝试避免使用此数组。也许Char.IsLetter()
可能有用。或正则表达式。
这有多"干净":
char[] alphas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".ToArray();
非英文字符呢?
char[] upperChars = Enumerable.Range(65, 26).Select(c => (Char)c).ToArray();
char[] lowerChars = Enumerable.Range(97, 26).Select(c => (Char)c).ToArray();
char[] allChars =
(Enumerable.Range(65, 26).Select(c => (Char) c)
.Union(Enumerable.Range(97, 26).Select(c => (Char) c)))
.ToArray();
您正在将 i 的 ASCII 值转换为字符值。 65 是"A"的 ASCII 值和"Z"的 90 97 = "a" 122 = "z"
char [] chars = new char[52]
for(int i=65;i<=90;i++)
char[i-65]= ConvertToChar(i);
for(int i=97,j=26;i<=122;i++,j++)
char[j]= ConvertToChar(i);