Générer un tableau de lettres dans l’alphabet

Existe-t-il un moyen facile de générer un tableau contenant les lettres de l’alphabet en C #? Ce n’est pas trop difficile de le faire à la main, mais je me demandais s’il y avait un moyen de le faire.

Je ne pense pas qu’il y ait une manière de construire, mais je pense que le plus facile serait

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); } 

oui ça marche même si la seule surcharge de Enumerable.Range accepte les parameters int 😉

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

J’ai écrit ceci pour obtenir le code de colonne MS Excel (A, B, C, …, Z, AA, AB, …, ZZ, AAA, AAB, …) basé sur un index basé sur 1. (Bien sûr, passer à base zéro laisse simplement la column--; au début.)

 public static Ssortingng getColumnNameFromIndex(int column) { column--; Ssortingng col = Convert.ToSsortingng((char)('A' + (column % 26))); while (column >= 26) { column = (column / 26) -1; col = Convert.ToSsortingng((char)('A' + (column % 26))) + col; } return col; } 

En supposant que vous parlez des lettres de l’alphabet anglais …

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

Vous pourriez faire quelque chose comme ça, basé sur les valeurs ascii des caractères:

 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 } 

(Voir le tableau ici .) Vous passez simplement de la valeur int du caractère à la valeur du caractère - mais cela ne fonctionne que pour les caractères ascii, mais pas pour les langues différentes, etc.

EDIT: Comme suggéré par Mehrdad dans le commentaire d'une solution similaire, il est préférable de le faire:

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

Cela jette le caractère A sur sa valeur int, puis s'incrémente en fonction de cela, de sorte qu'il n'est pas codé en dur.

Notez également que la chaîne a un opérateur [] qui renvoie un caractère Char et un IEnumerable . Par conséquent, dans la plupart des cas, vous pouvez utiliser une chaîne en tant que caractère []. Par conséquent:

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

Surpris, personne n’a proposé de solution de rendement:

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

Exemple:

 foreach (var c in Alphabet()) { Console.Write(c); } 
 char alphaStart = Char.Parse("A"); char alphaEnd = Char.Parse("Z"); for(char i = alphaStart; i <= alphaEnd; i++) { string anchorLetter = i.ToString(); } 
 //generate a list of alphabet using csharp //this recurcive function will return you //a ssortingng 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 ssortingng CharacterIncrement(int colCount) { int TempCount = 0; ssortingng returnCharCount = ssortingng.Empty; if (colCount <= 25) { 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++; }