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.
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();
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 ;-)
for (char letter = 'A'; letter <= 'Z'; letter++)
{
Debug.WriteLine(letter);
}
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
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;
}
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();
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.
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);
}
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);
}
var alphabets = Enumerable.Range('A', 26).Select((num) => ((char)num).ToString()).ToList();
//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++;
}
char alphaStart = Char.Parse("A");
char alphaEnd = Char.Parse("Z");
for(char i = alphaStart; i <= alphaEnd; i++) {
string anchorLetter = i.ToString();
}