在字母表中生成一个字母数组
有一个简单的方法来生成一个包含在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(); }