Existe-t-il un moyen simple de générer un tableau contenant les lettres de l'alphabet en C #? Ce n'est pas trop difficile de le faire à la main, mais je me demandais s'il y avait un moyen intégré de le faire.
Existe-t-il un moyen simple de générer un tableau contenant les lettres de l'alphabet en C #? Ce n'est pas trop difficile de le faire à la main, mais je me demandais s'il y avait un moyen intégré de le faire.
Réponses:
Je ne pense pas qu'il y ait un moyen intégré, mais je pense que le plus simple 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 ça marche même si la seule surcharge d'Enumerable.Range accepte les paramètres int ;-)
String.Concat(Enumerable.Range('a', 'z' - 'a' + 1).Select(c => ((char)c).ToString().ToUpperInvariant()));
retourne ABCDEFGHIJKLMNOPQRSTUVWXYZ
;
Enumerable.Range('a', 26)
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 sûr, passer à la base zéro revient simplement à laisser 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;
}
Convert.ToString
par le String.valueOf
fait fonctionner en Java :)
En supposant que vous vouliez dire 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 effectuez simplement un transtypage de la valeur int du caractère à la valeur du caractère - mais cela ne fonctionne que pour les caractères ascii et non dans des langues différentes, etc.
EDIT: Comme suggéré par Mehrdad dans le commentaire d'une solution similaire, il vaut mieux faire ceci:
alphabet[i] = (char)(i+(int)('A'));
Cela convertit le caractère A à sa valeur int, puis incrémente en fonction de cela, il n'est donc pas codé en dur.
char[] alphabet = new char[26];
?
Notez également que la chaîne a un opérateur [] qui renvoie un Char, et est donc un IEnumerable<char>
, donc dans la plupart des cas, vous pouvez utiliser une chaîne comme char []. 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é une 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);
}
for
boucle.
yield return
partie, ce n'est pas vraiment équivalent à une boucle for. Il est tel qu'il pourrait être utilisé pour renvoyer paresseusement une série infinie.
while
avec un compteur qui incrémente à chaque tour et se termine sur une valeur fixe. C'est exactement ce qui a for
été conçu pour remplacer.
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';
, avec des guillemets simples au lieu de guillemets doubles.
//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
et while
)
4 façons d'obtenir l'alphabet anglais dans la 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()}");
}
}