¿Existe una 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 incorporada de hacer esto.
¿Existe una 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 incorporada de hacer esto.
Respuestas:
No creo que haya una forma incorporada, pero creo que la 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 ;-)
String.Concat(Enumerable.Range('a', 'z' - 'a' + 1).Select(c => ((char)c).ToString().ToUpperInvariant()));
devoluciones ABCDEFGHIJKLMNOPQRSTUVWXYZ
;
Enumerable.Range('a', 26)
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
Escribí esto para obtener el código de columna de Excel de MS (A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, AAB, ...) basado en un índice basado en 1. (Por supuesto, cambiar a base cero es simplemente dejar el column--;
al principio).
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;
}
Convert.ToString
con String.valueOf
hace que funcione en Java :)
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ía hacer algo como esto, basado en los valores ascii de los caracteres:
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á pasando del valor int del carácter al valor del carácter, pero eso solo funciona para caracteres ascii, no para diferentes idiomas, etc.
EDITAR: Como sugirió Mehrdad en el comentario a una solución similar, es mejor hacer esto:
alphabet[i] = (char)(i+(int)('A'));
Esto convierte el carácter A en su valor int y luego se incrementa en base a esto, por lo que no está codificado.
char[] alphabet = new char[26];
?
Tenga en cuenta también que la cadena tiene un operador [] que devuelve un Char, y es an IEnumerable<char>
, por lo que para la mayoría de los propósitos, puede usar una cadena como 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<char> Alphabet()
{
for (char letter = 'A'; letter <= 'Z'; letter++)
{
yield return letter;
}
}
Ejemplo:
foreach (var c in Alphabet())
{
Console.Write(c);
}
for
bucle.
yield return
parte, no es realmente equivalente a un bucle for. Es tal que podría usarse para devolver una serie infinita perezosamente.
while
contador que aumenta cada turno y termina en un valor fijo. Eso es exactamente lo que for
fue diseñado para reemplazar.
var alphabets = Enumerable.Range('A', 26).Select((num) => ((char)num).ToString()).ToList();
char alphaStart = Char.Parse("A");
char alphaEnd = Char.Parse("Z");
for(char i = alphaStart; i <= alphaEnd; i++) {
string anchorLetter = i.ToString();
}
char alphaStart = 'A';
, con comillas simples en lugar de comillas dobles.
//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++;
}
if
y while
)
4 formas de obtener el alfabeto inglés en la consola:
public void ShowEnglishAlphabet()
{
var firstLetter = 'a';
var endLetter = 'z';
for (var letter = firstLetter; letter <= endLetter; letter++)
{
Console.WriteLine($"{letter}-{letter.ToString().ToUpper()}");
}
}
public void ShowEnglishAlphabetFromUnicodeTableDecNumber()
{
var firstLetter = 97;
var endLetter = 122;
for (var letterNumberUnicodeTable = firstLetter;
letterNumberUnicodeTable <= endLetter; letterNumberUnicodeTable++)
{
Console.WriteLine($"{(char)letterNumberUnicodeTable}-
{((char)letterNumberUnicodeTable).ToString().ToUpper()}");
}
}
public void ShowEnglishAlphabetUnicodeTableEscapeSequence()
{
var firstLetter = '\u0061';
var endLetter = '\u007A';
for (var letterNumberUnicodeTable = firstLetter;
letterNumberUnicodeTable <= endLetter; letterNumberUnicodeTable++)
{
Console.WriteLine($"{letterNumberUnicodeTable}-
{letterNumberUnicodeTable.ToString().ToUpper()}");
}
}
public void ShowEnglishAlphabetUnicodeTableLinq()
{
var alphabets = Enumerable.Range('a', 26).Select(letter =>
((char)letter).ToString()).ToList();
foreach (var letter in alphabets)
{
Console.WriteLine($"{letter}-{letter.ToUpper()}");
}
}