获取所有字母字符的数组

时间:2013-01-29 21:11:49

标签: c# .net string

  

可能重复:
  A to Z list of char from Enumerable.Range

是否有一种简单的方法可以获得char[]所有字母字符?

我知道我可以这样做:

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

对于所有大写和小写字符,但我想知道是否有更容易(和更清洁的外观)方式来执行此操作。

5 个答案:

答案 0 :(得分:10)

也许是这样的:

string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char [] alphas = (alphabet + alphabet.ToLower()).ToCharArray();

答案 1 :(得分: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()可能有用。或正则表达式。

答案 2 :(得分:5)

这是多么“干净”:

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

非英语字符怎么样?

答案 3 :(得分: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();

答案 4 :(得分:1)

您正在将i的ascii值转换为char值。  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);