Generare una serie di lettere nell’alfabeto

C’è un modo semplice per generare una matrice contenente le lettere dell’alfabeto in C #? Non è troppo difficile farlo a mano, ma mi stavo chiedendo se ci fosse un modo per farlo.

Non penso che ci sia un modo costruito, ma penso che sarebbe il più semplice

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 😉

 for (char letter = 'A'; letter <= 'Z'; letter++) { Debug.WriteLine(letter); } 
 char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray(); 

Ho scritto questo per ottenere il codice MS Excel (A, B, C, …, Z, AA, AB, …, ZZ, AAA, AAB, …) basato su un indice a 1. (Naturalmente, il passaggio a zero non fa altro che lasciare la 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; } 

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 di simile, basandoti sui valori ascii dei personaggi:

 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 personaggio al valore del personaggio - ma, che funziona solo per caratteri ascii non lingue diverse ecc.

EDIT: Come suggerito da Mehrdad nel commento ad una soluzione simile, è meglio farlo:

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

Questo lancia il carattere A al suo valore int e quindi incrementa in base a questo, quindi non è codificato.

Si noti inoltre che la stringa ha un operatore [] che restituisce un Char ed è un IEnumerable , quindi per la maggior parte degli scopi, è ansible utilizzare una stringa come char []. 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 rendimento:

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

Esempio:

 foreach (var c in Alphabet()) { Console.Write(c); } 
 char alphaStart = Char.Parse("A"); char alphaEnd = Char.Parse("Z"); for(char i = alphaStart; i <= alphaEnd; i++) { string anchorLetter = i.ToString(); } 
 //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++; }