Frage Generieren eines Arrays von Buchstaben im Alphabet


Gibt es eine einfache Möglichkeit, ein Array mit den Buchstaben des Alphabets in C # zu generieren? Es ist nicht schwer, es mit der Hand zu machen, aber ich habe mich gefragt, ob es dafür eine eingebaute Lösung gibt.


75
2017-11-24 15:25


Ursprung


Antworten:


Ich glaube nicht, dass es einen eingebauten Weg gibt, aber ich denke, der einfachste wäre es

  char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();

170
2017-11-24 15:29



C # 3.0:

char[] az = Enumerable.Range('a', 'z' - 'a' + 1).Select(i => (Char)i).ToArray();
foreach (var c in az)
{
    Console.WriteLine(c);
}

Ja, es funktioniert auch, wenn die einzige Überladung von Enumerable.Range int-Parameter akzeptiert ;-)


86
2017-11-24 15:39



for (char letter = 'A'; letter <= 'Z'; letter++)
{
     Debug.WriteLine(letter);
}

42
2017-08-11 04:50



char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();

27
2018-02-14 02:56



Ich schrieb dies, um den MS-Excel-Spaltencode (A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, AAB, ...) basierend auf einem 1-basierten Index zu erhalten. (Natürlich wird beim Wechsel auf Null-Basis einfach die column--; am Anfang.)

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

17
2018-03-11 10:43



Angenommen, Sie meinen die Buchstaben des englischen Alphabets ...

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

13
2017-11-24 15:36



Sie könnten so etwas tun, basierend auf den ASCII-Werten der Charaktere:

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
}

(Siehe die Tabelle Hier.) Sie geben nur den int-Wert des Zeichens in den Zeichenwert um - aber das funktioniert nur für ASCII-Zeichen, nicht für verschiedene Sprachen usw.

BEARBEITEN: Wie vorgeschlagen von Mehrdad Im Kommentar zu einer ähnlichen Lösung ist es besser, dies zu tun:

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

Dadurch wird das A-Zeichen in den int-Wert umgewandelt und anschließend basierend darauf inkrementiert, sodass es nicht fest codiert ist.


5
2017-11-24 15:35



Beachten Sie außerdem, dass die Zeichenfolge einen Operator [] hat, der ein Zeichen zurückgibt und ein Zeichen ist IEnumerable<char>Für die meisten Zwecke können Sie einen String als char [] verwenden. Daher:

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

foreach(char c in alpha)
{  
     Console.WriteLine(c);
}

5
2017-11-24 16:49



Überrascht hat niemand eine Ertragslösung vorgeschlagen:

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

Beispiel:

foreach (var c in Alphabet())
{
    Console.Write(c);
}

2
2017-12-18 11:15