在字母表中生成一个字母数组

有一个简单的方法来生成一个包含在C#中的字母表字母数组? 手工操作并不难,但是我想知道是否有内置的方法来做到这一点。

我不认为有一个内置的方式,但我认为最简单的是

char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); 

C#3.0:

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

是的,即使Enumerable.Range的唯一重载接受int参数,它也可以工作;-)

 for (char letter = 'A'; letter <= 'Z'; letter++) { Debug.WriteLine(letter); } 
 char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray(); 

我写了这个基于1的索引来获得MS excel列代码(A,B,C,…,Z,AA,AB,…,ZZ,AAA,AAB,…)。 (当然,切换到基于零的就是简单地从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; } 

假设你指的是英文字母的字母…

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

还要注意,该string有一个运算符[],它返回一个字符,并且是一个IEnumerable<char> ,因此对于大多数用途,您可以使用string作为char []。 因此:

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

你可以根据字符的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 } 

(请看这里的表格)你只是从字符的int值转换为字符值 – 但是,这只适用于ascii字符而不是不同的语言等

编辑:正如Mehrdad在类似解决scheme的评论中所build议的,最好这样做:

 alphabet[i] = (char)(i+(int)('A')); 

这将A字符转换为int值,然后基于此值进行递增,所以不会硬编码。

惊讶没有人提出了产量解决scheme:

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

例:

 foreach (var c in Alphabet()) { Console.Write(c); } 
 //generate a list of alphabet using csharp //this recurcive function will return you //a string with position of passed int //say if pass 0 will return A ,1-B,2-C,.....,26-AA,27-AB,....,701-ZZ,702-AAA,703-AAB,... static string CharacterIncrement(int colCount) { int TempCount = 0; string returnCharCount = string.Empty; if (colCount <> { TempCount = colCount; char CharCount = Convert.ToChar((Convert.ToInt32('A') + TempCount)); returnCharCount += CharCount; return returnCharCount; } else { var rev = 0; while (colCount >= 26) { colCount = colCount - 26; rev++; } returnCharCount += CharacterIncrement(rev-1); returnCharCount += CharacterIncrement(colCount); return returnCharCount; } } //--------this loop call this function---------// int i = 0; while (i <> { string CharCount = string.Empty; CharCount = CharacterIncrement(i); i++; } 
 char alphaStart = Char.Parse("A"); char alphaEnd = Char.Parse("Z"); for(char i = alphaStart; i <= alphaEnd; i++) { string anchorLetter = i.ToString(); }