生成字母表中的字母数组

Hel*_*ant 84 c# alphabet

有没有一种简单的方法来生成包含C#中字母表字母的数组?手动完成它并不难,但我想知道是否有内置的方法来做到这一点.

Bob*_*Bob 182

我不认为有内置的方式,但我认为最简单的方法

  char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
Run Code Online (Sandbox Code Playgroud)

  • 它也适用于其他字母表,只要您将字符串放在资源:) (7认同)
  • 有时,最简单的答案是最好的。 (2认同)

Pop*_*lin 99

C#3.0:

char[] az = Enumerable.Range('a', 'z' - 'a' + 1).Select(i => (Char)i).ToArray();
foreach (var c in az)
{
    Console.WriteLine(c);
}
Run Code Online (Sandbox Code Playgroud)

是的,即使Enumerable.Range的唯一重载接受int参数,它确实有效;-)

  • @CasperT:可能是'Enumerable.Range('a',26)` (14认同)
  • 这对于字母的 ASCII 代码超出范围“a”-“z”的语言不起作用。在这种情况下不能使用此方法。否则很好的解决方案。 (2认同)

Sim*_*mon 50

for (char letter = 'A'; letter <= 'Z'; letter++)
{
     Debug.WriteLine(letter);
}
Run Code Online (Sandbox Code Playgroud)

  • 大声笑我知道这个答案是一岁,但这太棒了,我不知道这是可能的,谢谢! (3认同)

Raz*_*dze 32

char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是最好的解决方案,因为您可以使用此方法创建整数和小写字母数组.这应该是接受的答案:) (3认同)

Nye*_*uds 20

我写这个是为了获得MS excel列代码(A,B,C,...,Z,AA,AB,...,ZZ,AAA,AAB,...)基于1的索引.(当然,切换到零基础只是column--;在开始时离开.)

public static String getColumnNameFromIndex(int column)
{
    column--;
    String col = Convert.ToString((char)('A' + (column % 26)));
    while (column >= 26)
    {
        column = (column / 26) -1;
        col = Convert.ToString((char)('A' + (column % 26))) + col;
    }
    return col;
}
Run Code Online (Sandbox Code Playgroud)

  • 哦,嘿,用`String.valueOf替换`Convert.ToString`使它在Java中工作:) (2认同)

rp.*_*rp. 13

假设你的意思是英文字母的字母......

    for ( int i = 0; i < 26; i++ )
    {
        Console.WriteLine( Convert.ToChar( i + 65 ) );
    }
    Console.WriteLine( "Press any key to continue." );
    Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

  • 最好使用(int)'A'而不是硬编码65.这将使代码更具可读性,更不容易出错. (9认同)
  • 对我来说看起来不像阵列. (5认同)

xan*_*xan 7

您可以根据字符的ascii值执行类似的操作:

char[26] alphabet;

for(int i = 0; i <26; i++)
{
     alphabet[i] = (char)(i+65); //65 is the offset for capital A in the ascaii table
}
Run Code Online (Sandbox Code Playgroud)

(请参阅此处的表.)您只是将字符的int值转换为字符值 - 但是,这仅适用于不同语言的ascii字符等.

编辑: 正如Mehrdad在对类似解决方案的评论中所建议的那样,最好这样做:

alphabet[i] = (char)(i+(int)('A'));
Run Code Online (Sandbox Code Playgroud)

这会将A字符转换为它的int值,然后根据此值递增,因此它不是硬编码的.

  • 不应该是“char[]alphabet = new char[26];”吗? (2认同)

Jam*_*ran 5

另请注意,字符串有一个operator [],它返回一个Char,并且是一个IEnumerable<char>,因此对于大多数用途,您可以使用字符串作为char [].因此:

string alpha = "ABCDEFGHIJKLMNOPQRSTUVQXYZ";
for (int i =0; i < 26; ++i)
{  
     Console.WriteLine(alpha[i]);
}

foreach(char c in alpha)
{  
     Console.WriteLine(c);
}
Run Code Online (Sandbox Code Playgroud)


wes*_*ton 5

令人惊讶的是没有人提出了一种产量解决方案:

public static IEnumerable<char> Alphabet()
{
    for (char letter = 'A'; letter <= 'Z'; letter++)
    {
        yield return letter;
    }
}
Run Code Online (Sandbox Code Playgroud)

例子:

foreach (var c in Alphabet())
{
    Console.Write(c);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

var alphabets = Enumerable.Range('A', 26).Select((num) => ((char)num).ToString()).ToList();
Run Code Online (Sandbox Code Playgroud)