Generando una matriz de letras en el alfabeto

¿Hay alguna manera fácil de generar una matriz que contenga las letras del alfabeto en C #? No es demasiado difícil hacerlo a mano, pero me preguntaba si había una forma integrada de hacerlo.

No creo que haya un camino construido, pero creo que lo más fácil sería

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

sí, funciona incluso si la única sobrecarga de Enumerable.Range acepta parámetros int 😉

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

Escribí esto para obtener el código de columna MS Excel (A, B, C, …, Z, AA, AB, …, ZZ, AAA, AAB, …) basado en un índice basado en 1. (Por supuesto, cambiar a cero es simplemente dejar fuera de la column--; al comienzo).

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

Suponiendo que te refieres a las letras del alfabeto inglés …

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

Podrías hacer algo como esto, basado en los valores ascii de los personajes:

 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 } 

(Consulte la tabla aquí .) Solo está lanzando desde el valor int del carácter hasta el valor del carácter, pero eso solo funciona para los caracteres ascii pero no para los diferentes idiomas, etc.

EDITAR: Como Mehrdad sugirió en el comentario a una solución similar, es mejor hacer esto:

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

Esto arroja el carácter A a su valor int y luego se incrementa en función de esto, por lo que no está codificado.

Tenga en cuenta también que la cadena tiene un operador [] que devuelve un Char, y es un IEnumerable , por lo que para la mayoría de los propósitos, puede usar un string como un char []. Por lo tanto:

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

Sorprendido, nadie ha sugerido una solución de rendimiento:

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

Ejemplo:

 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 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 <= 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++; } 
    Intereting Posts