Existe uma maneira fácil de gerar uma matriz contendo as letras do alfabeto em C #? Não é muito difícil fazer isso manualmente, mas eu queria saber se existe uma maneira embutida de fazer isso.
Existe uma maneira fácil de gerar uma matriz contendo as letras do alfabeto em C #? Não é muito difícil fazer isso manualmente, mas eu queria saber se existe uma maneira embutida de fazer isso.
Respostas:
Não acho que haja uma maneira embutida, mas acho que o mais fácil seria
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);
}
sim, funciona mesmo se a única sobrecarga de Enumerable.Range aceita parâmetros int ;-)
String.Concat(Enumerable.Range('a', 'z' - 'a' + 1).Select(c => ((char)c).ToString().ToUpperInvariant()));
retorna ABCDEFGHIJKLMNOPQRSTUVWXYZ
;
Enumerable.Range('a', 26)
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
Eu escrevi isso para obter o código de coluna do MS Excel (A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, AAB, ...) com base em um índice baseado em 1. (Claro, mudar para base zero é simplesmente deixar de fora o column--;
no início.)
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
por String.valueOf
faz funcionar em Java :)
Supondo que você se refira às letras do 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();
Você poderia fazer algo assim, com base nos valores ascii dos personagens:
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
}
(Veja a tabela aqui .) Você está apenas convertendo o valor int do caractere para o valor do caractere - mas isso só funciona para caracteres ASCII e não para idiomas diferentes, etc.
EDITAR: conforme sugerido por Mehrdad no comentário para uma solução semelhante, é melhor fazer isso:
alphabet[i] = (char)(i+(int)('A'));
Isso converte o caractere A em seu valor interno e, em seguida, incrementa com base nisso, portanto, não é codificado.
char[] alphabet = new char[26];
?
Observe também que a string tem um operador [] que retorna um Char e é um IEnumerable<char>
, portanto, para a maioria dos propósitos, você pode usar uma string como um char []. Conseqüentemente:
string alpha = "ABCDEFGHIJKLMNOPQRSTUVQXYZ";
for (int i =0; i < 26; ++i)
{
Console.WriteLine(alpha[i]);
}
foreach(char c in alpha)
{
Console.WriteLine(c);
}
Surpreso, ninguém sugeriu uma solução de rendimento:
public static IEnumerable<char> Alphabet()
{
for (char letter = 'A'; letter <= 'Z'; letter++)
{
yield return letter;
}
}
Exemplo:
foreach (var c in Alphabet())
{
Console.Write(c);
}
for
loop.
yield return
parte, não é realmente equivalente a um loop for. É tal que poderia ser usado para retornar uma série infinita preguiçosamente.
while
com um contador que aumenta a cada turno e termina em um valor fixo. Isso é exatamente o que for
foi projetado para substituir.
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';
, com aspas simples em vez de aspas duplas.
//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
e while
)
4 maneiras de obter o alfabeto inglês no console:
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()}");
}
}