Có cách nào dễ dàng để tạo một mảng chứa các chữ cái của bảng chữ cái trong C # không? Không quá khó để làm bằng tay, nhưng tôi đang tự hỏi liệu có cách nào được xây dựng để làm điều này không.
Có cách nào dễ dàng để tạo một mảng chứa các chữ cái của bảng chữ cái trong C # không? Không quá khó để làm bằng tay, nhưng tôi đang tự hỏi liệu có cách nào được xây dựng để làm điều này không.
Câu trả lời:
Tôi không nghĩ rằng có một cách được xây dựng, nhưng tôi nghĩ cách dễ nhất sẽ là
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);
}
vâng, nó hoạt động ngay cả khi quá tải duy nhất của Enumerable.Range chấp nhận tham số int ;-)
String.Concat(Enumerable.Range('a', 'z' - 'a' + 1).Select(c => ((char)c).ToString().ToUpperInvariant()));
trả lại ABCDEFGHIJKLMNOPQRSTUVWXYZ
;
Enumerable.Range('a', 26)
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
Tôi viết cái này để lấy mã cột MS excel (A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, AAB, ...) dựa trên chỉ số 1-based. (Tất nhiên, chuyển sang dựa trên số 0 chỉ đơn giản là bỏ qua column--;
ngay từ đầu.)
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
bằng String.valueOf
làm cho nó hoạt động trong Java :)
Giả sử ý bạn là các chữ cái trong bảng chữ cái tiếng Anh ...
for ( int i = 0; i < 26; i++ )
{
Console.WriteLine( Convert.ToChar( i + 65 ) );
}
Console.WriteLine( "Press any key to continue." );
Console.ReadKey();
Bạn có thể làm điều gì đó như thế này, dựa trên các giá trị ascii của các ký tự:
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
}
(Xem bảng ở đây .) Bạn chỉ đang truyền từ giá trị int của ký tự sang giá trị ký tự - nhưng, điều đó chỉ hoạt động đối với các ký tự ascii không phải các ngôn ngữ khác nhau, v.v.
CHỈNH SỬA: Theo đề xuất của Mehrdad trong nhận xét cho một giải pháp tương tự, tốt hơn nên làm điều này:
alphabet[i] = (char)(i+(int)('A'));
Điều này chuyển ký tự A thành giá trị int của nó và sau đó tăng lên dựa trên điều này, vì vậy nó không được mã hóa cứng.
char[] alphabet = new char[26];
?
Cũng lưu ý rằng, chuỗi có một toán tử [] trả về một Char và là một IEnumerable<char>
, vì vậy đối với hầu hết các mục đích, bạn có thể sử dụng một chuỗi như một char []. Vì thế:
string alpha = "ABCDEFGHIJKLMNOPQRSTUVQXYZ";
for (int i =0; i < 26; ++i)
{
Console.WriteLine(alpha[i]);
}
foreach(char c in alpha)
{
Console.WriteLine(c);
}
Ngạc nhiên là không ai đề xuất giải pháp lợi nhuận:
public static IEnumerable<char> Alphabet()
{
for (char letter = 'A'; letter <= 'Z'; letter++)
{
yield return letter;
}
}
Thí dụ:
foreach (var c in Alphabet())
{
Console.Write(c);
}
for
vòng lặp.
yield return
một phần, nó không thực sự tương đương với vòng lặp for. Nó có thể được sử dụng để trả về một chuỗi vô hạn một cách lười biếng.
while
bộ đếm tăng lên mỗi lượt và kết thúc ở một giá trị cố định. Đó chính xác là những gì for
được thiết kế để thay thế.
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';
, với dấu nháy đơn thay vì dấu nháy kép.
//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
và while
báo cáo)
4 cách nhận bảng chữ cái tiếng Anh trong 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()}");
}
}