Создание массива букв в алфавите
есть ли простой способ создать массив, содержащий буквы алфавита в C#? Это не слишком сложно сделать вручную, но мне было интересно, есть ли встроенный способ сделать это.
12 ответов
Я не думаю, что есть встроенный способ, но я думаю, что проще будет
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);
}
да, он работает, даже если единственная перегрузка перечисляемого.Диапазон принимает параметры int; -)
Я написал это,чтобы получить код столбца MS excel (A,B, C,..., Z, AA, AB,..., ЗЗ ААА, ААБ ...) на основе индекса 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;
}
предполагая, что вы имеете в виду буквы английского алфавита...
for ( int i = 0; i < 26; i++ )
{
Console.WriteLine( Convert.ToChar( i + 65 ) );
}
Console.WriteLine( "Press any key to continue." );
Console.ReadKey();
вы можете сделать что-то вроде этого, основываясь на значениях 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: Как подсказывает Mehrdad в комментарии к аналогичному решению, лучше сделать так:
alphabet[i] = (char)(i+(int)('A'));
это бросает A символ-это значение int, а затем инкременты на основе этого, поэтому он не жестко закодирован.
Примечание кроме того, строка имеет оператор [], который возвращает символ и является 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);
}
удивлен, что никто не предложил выходное решение:
public static IEnumerable<char> Alphabet()
{
for (char letter = 'A'; letter <= 'Z'; letter++)
{
yield return letter;
}
}
пример:
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++;
}