web-dev-qa-db-fra.com

Générer un tableau de lettres dans l'alphabet

Existe-t-il un moyen simple de générer un tableau contenant les lettres de l’alphabet en C #? Ce n’est pas si difficile de le faire à la main, mais je me demandais s’il existait une méthode intégrée pour le faire.

83
Helephant

Je ne pense pas qu'il y ait une manière intégrée, mais je pense que le plus facile serait

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

C # 3.0:

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

oui, cela fonctionne même si la seule surcharge d'Enumerable.Range accepte les paramètres int ;-)

98
Pop Catalin
for (char letter = 'A'; letter <= 'Z'; letter++)
{
     Debug.WriteLine(letter);
}
49
Simon
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
30
Raz Megrelidze

J'ai écrit ceci pour obtenir le code de colonne MS Excel (A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, AAB, ...) basé sur un index basé sur 1. (Bien entendu, le passage à la base zéro revient simplement à quitter le column--; au début.)

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

En supposant que vous entendez les lettres de l'alphabet anglais ...

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

Vous pouvez faire quelque chose comme ceci, basé sur les valeurs ascii des caractères:

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
}

(Voir le tableau ici .) Vous ne faites que transtyper de la valeur int du caractère à la valeur du caractère - mais cela ne fonctionne que pour les caractères ascii, pas différentes langues, etc.

EDIT: Comme suggéré par Mehrdad dans le commentaire d'une solution similaire, il est préférable de procéder ainsi:

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

Cela jette le caractère A sur sa valeur int, puis l'incrémente en conséquence, de sorte qu'il ne soit pas codé en dur.

6
xan

Notez également que la chaîne a un opérateur [] qui retourne un caractère, et est un IEnumerable<char>, vous pouvez donc utiliser une chaîne comme char [] dans la plupart des cas. Par conséquent:

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

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

Surpris, personne n'a suggéré de solution de rendement:

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

Exemple:

foreach (var c in Alphabet())
{
    Console.Write(c);
}
3
weston
var alphabets = Enumerable.Range('A', 26).Select((num) => ((char)num).ToString()).ToList();
2
Pradeep T M
//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++;
    }
0
rjdmello
char alphaStart = Char.Parse("A");
char alphaEnd = Char.Parse("Z");
for(char i = alphaStart; i <= alphaEnd; i++) {
    string anchorLetter = i.ToString();
}
0
aa.