มีวิธีง่ายๆในการสร้างอาร์เรย์ที่มีตัวอักษรใน 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 ช่วงยอมรับพารามิเตอร์ int ;-)
String.Concat(Enumerable.Range('a', 'z' - 'a' + 1).Select(c => ((char)c).ToString().ToUpperInvariant()));
ผลตอบแทนABCDEFGHIJKLMNOPQRSTUVWXYZ
;
Enumerable.Range('a', 26)
for (char letter = 'A'; letter <= 'Z'; letter++)
{
Debug.WriteLine(letter);
}
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 เท่านั้นไม่ใช่ภาษาอื่น
แก้ไข: ตามที่Mehrdadแนะนำในความคิดเห็นเกี่ยวกับวิธีแก้ปัญหาที่คล้ายกันควรทำดังนี้:
alphabet[i] = (char)(i+(int)('A'));
สิ่งนี้จะร่ายอักขระ A ให้เป็นค่า int จากนั้นเพิ่มขึ้นตามค่านี้จึงไม่ได้เข้ารหัสแบบแข็ง
char[] alphabet = new char[26];
หรือไม่?
นอกจากนี้สตริงยังมีโอเปอเรเตอร์ [] ซึ่งส่งคืน 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);
}
ไม่น่าแปลกใจที่ไม่มีใครแนะนำวิธีแก้ปัญหาผลตอบแทน:
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
ส่วนนี้มันไม่เทียบเท่ากับลูปจริงๆ มันจึงสามารถใช้ในการส่งคืนอนุกรมอนันต์ได้อย่างเฉื่อยชา
while
ตัวนับที่เพิ่มขึ้นในแต่ละเทิร์นและจบลงด้วยค่าคงที่ นั่นคือสิ่งที่for
ถูกออกแบบมาเพื่อแทนที่
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';
กับอัญประกาศเดี่ยวแทนอัญประกาศคู่
//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()}");
}
}
น่าเสียดายที่ไม่มีวิธีที่พร้อมใช้งาน
คุณสามารถใช้ได้; ถ่าน [] อักขระ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" .ToCharArray ();