c# - Generando una matriz de letras en el alfabeto
alphabet (11)
¿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.
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 ;-)
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;
}
No creo que haya un camino construido, pero creo que lo más fácil sería
char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
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 here .) 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.
Sorprendido, nadie ha sugerido una solución de rendimiento:
public static IEnumerable<char> Alphabet()
{
for (char letter = ''A''; letter <= ''Z''; letter++)
{
yield return letter;
}
}
Ejemplo:
foreach (var c in Alphabet())
{
Console.Write(c);
}
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();
Tenga en cuenta también que la cadena tiene un operador [] que devuelve un Char, y es un IEnumerable<char>
, 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);
}
//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++;
}
char alphaStart = Char.Parse("A");
char alphaEnd = Char.Parse("Z");
for(char i = alphaStart; i <= alphaEnd; i++) {
string anchorLetter = i.ToString();
}
char[] alphabet = Enumerable.Range(''A'', 26).Select(x => (char)x).ToArray();
for (char letter = ''A''; letter <= ''Z''; letter++)
{
Debug.WriteLine(letter);
}