Esiste un modo semplice per generare un array contenente le lettere dell'alfabeto in C #? Non è troppo difficile farlo a mano, ma mi chiedevo se ci fosse un modo integrato per farlo.
Esiste un modo semplice per generare un array contenente le lettere dell'alfabeto in C #? Non è troppo difficile farlo a mano, ma mi chiedevo se ci fosse un modo integrato per farlo.
Risposte:
Non penso che ci sia un modo integrato, ma penso che il più semplice sarebbe
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ì, funziona anche se l'unico overload di Enumerable.Range accetta parametri int ;-)
String.Concat(Enumerable.Range('a', 'z' - 'a' + 1).Select(c => ((char)c).ToString().ToUpperInvariant()));
ritorni ABCDEFGHIJKLMNOPQRSTUVWXYZ
;
Enumerable.Range('a', 26)
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
Ho scritto questo per ottenere il codice della colonna MS Excel (A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, AAB, ...) basato su un indice basato su 1. (Ovviamente, passare alla base zero significa semplicemente tralasciare column--;
all'inizio.)
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 lo String.valueOf
fa funzionare in Java :)
Supponendo che tu intenda le lettere dell'alfabeto inglese ...
for ( int i = 0; i < 26; i++ )
{
Console.WriteLine( Convert.ToChar( i + 65 ) );
}
Console.WriteLine( "Press any key to continue." );
Console.ReadKey();
Potresti fare qualcosa del genere, in base ai valori ASCII dei caratteri:
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
}
(Vedi la tabella qui .) Stai solo trasmettendo dal valore int del carattere al valore del carattere, ma funziona solo per i caratteri ASCII, non per lingue diverse ecc.
EDIT: come suggerito da Mehrdad nel commento a una soluzione simile, è meglio farlo:
alphabet[i] = (char)(i+(int)('A'));
Questo lancia il carattere A al suo valore int e quindi aumenta in base a questo, quindi non è hardcoded.
char[] alphabet = new char[26];
?
Nota anche che la stringa ha un operatore [] che restituisce un carattere ed è an IEnumerable<char>
, quindi per la maggior parte degli scopi puoi usare una stringa come carattere []. Quindi:
string alpha = "ABCDEFGHIJKLMNOPQRSTUVQXYZ";
for (int i =0; i < 26; ++i)
{
Console.WriteLine(alpha[i]);
}
foreach(char c in alpha)
{
Console.WriteLine(c);
}
Sorpreso nessuno ha suggerito una soluzione di resa:
public static IEnumerable<char> Alphabet()
{
for (char letter = 'A'; letter <= 'Z'; letter++)
{
yield return letter;
}
}
Esempio:
foreach (var c in Alphabet())
{
Console.Write(c);
}
for
loop.
yield return
parte, non è realmente equivalente a un ciclo for. È tale che potrebbe essere utilizzato per restituire pigramente una serie infinita.
while
con un contatore che aumenta ogni turno e finisce su un valore fisso. Questo è esattamente ciò che è for
stato progettato per sostituire.
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 virgolette singole anziché doppie.
//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 modi per ottenere l'alfabeto inglese nella 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()}");
}
}