Генерация массива букв в алфавите - PullRequest
79 голосов
/ 24 ноября 2008

Есть ли простой способ создать массив, содержащий буквы алфавита в C #? Это не так уж сложно сделать вручную, но мне было интересно, есть ли способ сделать это.

Ответы [ 12 ]

181 голосов
/ 24 ноября 2008

Я не думаю, что есть встроенный способ, но я думаю, что самым простым будет

  char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
96 голосов
/ 24 ноября 2008

C # 3.0:

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

да, это работает, даже если единственная перегрузка Enumerable.Range принимает параметры int; -)

46 голосов
/ 11 августа 2011
for (char letter = 'A'; letter <= 'Z'; letter++)
{
     Debug.WriteLine(letter);
}
30 голосов
/ 14 февраля 2014
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
19 голосов
/ 11 марта 2011

Я написал это, чтобы получить код столбца MS Excel (A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, AAB, ...) на основе 1 индекс. (Конечно, переключение на нулевое значение просто означает отключение column--; в начале.)

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;
}
13 голосов
/ 24 ноября 2008

Предположим, вы имеете в виду буквы английского алфавита ...

    for ( int i = 0; i < 26; i++ )
    {
        Console.WriteLine( Convert.ToChar( i + 65 ) );
    }
    Console.WriteLine( "Press any key to continue." );
    Console.ReadKey();
6 голосов
/ 24 ноября 2008

Вы можете сделать что-то вроде этого, основываясь на значениях символов ascii:

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
}

(см. Таблицу здесь .) Вы просто приводите значение типа int к значению символа - но это работает только для символов ascii, не для разных языков и т. Д.

EDIT: Как рекомендует Мехрдад в комментарии к аналогичному решению, лучше сделать это:

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

Это преобразует символ A в его значение int, а затем увеличивает его на основе этого, чтобы он не был жестко закодирован.

5 голосов
/ 24 ноября 2008

Обратите внимание, что в строке есть оператор [], который возвращает Char, и значение IEnumerable<char>, поэтому для большинства целей вы можете использовать строку в качестве char []. Следовательно:

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

foreach(char c in alpha)
{  
     Console.WriteLine(c);
}
2 голосов
/ 26 сентября 2018
var alphabets = Enumerable.Range('A', 26).Select((num) => ((char)num).ToString()).ToList();
2 голосов
/ 18 декабря 2012

Удивлен, никто не предложил решение о выходе:

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

Пример:

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