Чи є простий спосіб створити масив, що містить літери алфавіту в C #? Зробити це вручну не надто складно, але мені було цікаво, чи є для цього вбудований спосіб.
Чи є простий спосіб створити масив, що містить літери алфавіту в C #? Зробити це вручну не надто складно, але мені було цікаво, чи є для цього вбудований спосіб.
Відповіді:
Я не думаю, що існує вбудований спосіб, але я думаю, що це було б найпростіше
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);
}
так, це працює, навіть якщо єдине перевантаження Enumerable.Range приймає параметри int ;-)
String.Concat(Enumerable.Range('a', 'z' - 'a' + 1).Select(c => ((char)c).ToString().ToUpperInvariant()));
повертається ABCDEFGHIJKLMNOPQRSTUVWXYZ
;
Enumerable.Range('a', 26)
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
Я написав це, щоб отримати код стовпця 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;
}
Convert.ToString
на String.valueOf
робить це працює на Java :)
Припускаючи, що ви маєте на увазі букви англійського алфавіту ...
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: Як запропонував Мехрдад у коментарі до подібного рішення, краще зробити це:
alphabet[i] = (char)(i+(int)('A'));
Це призводить символ A до його значення int, а потім збільшується на основі цього, тому він не є жорстко закодованим.
char[] alphabet = new char[26];
?
Зауважте також, що рядок має оператор [], який повертає 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);
}
for
циклу.
yield return
частину, вона насправді не еквівалентна циклу for. Він такий, що за допомогою нього можна ліниво повернути нескінченний ряд.
while
лічильник, який збільшує кожен хід і закінчується на фіксованому значенні. Це саме те, що for
було розроблено для заміни.
char alphaStart = Char.Parse("A");
char alphaEnd = Char.Parse("Z");
for(char i = alphaStart; i <= alphaEnd; i++) {
string anchorLetter = i.ToString();
}
char alphaStart = 'A';
, з одинарними лапками замість подвійних лапок.
//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
і while
твердження)
4 способи отримання англійського алфавіту в консолі:
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()}");
}
}