4

可能重复:
来自 Enumerable.Range 的字符的 A 到 Z 列表

有没有一种简单的方法来获取char[]所有字母字符?

我知道我可以做这样的事情:

char[] alphas = new char[]{'a', 'b', 'c', 'd', ..............};

对于所有大写和小写字符,但我想知道是否有一种更简单(并且看起来更干净)的方法来做到这一点。

4

5 回答 5

10

也许是这样的:

string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char [] alphas = (alphabet + alphabet.ToLower()).ToCharArray();
于 2013-01-29T21:14:07.223 回答
6
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()可能有用。或正则表达式。

于 2013-01-29T21:15:54.753 回答
6

这是多么“干净”:

char[] alphas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".ToArray();

非英文字符怎么办?

于 2013-01-29T21:17:21.117 回答
4
        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();
于 2013-01-29T21:17:38.840 回答
1

您正在将 i 的 ascii 值转换为 char 值。65 是 'A' 的 ascii 值和 90 的 "Z" 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);
于 2013-01-29T21:14:16.160 回答