Gibt es eine einfache Möglichkeit, ein Array mit den Buchstaben des Alphabets in C # zu generieren? Es ist nicht allzu schwer, es von Hand zu machen, aber ich habe mich gefragt, ob es einen eingebauten Weg gibt, dies zu tun.
Gibt es eine einfache Möglichkeit, ein Array mit den Buchstaben des Alphabets in C # zu generieren? Es ist nicht allzu schwer, es von Hand zu machen, aber ich habe mich gefragt, ob es einen eingebauten Weg gibt, dies zu tun.
Antworten:
Ich glaube nicht, dass es einen eingebauten Weg gibt, aber ich denke, der einfachste wäre
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);
}
ja es funktioniert auch wenn die einzige Überladung von Enumerable.Range int Parameter akzeptiert ;-)
String.Concat(Enumerable.Range('a', 'z' - 'a' + 1).Select(c => ((char)c).ToString().ToUpperInvariant()));
kehrt zurück ABCDEFGHIJKLMNOPQRSTUVWXYZ
;
Enumerable.Range('a', 26)
char[] alphabet = Enumerable.Range('A', 26).Select(x => (char)x).ToArray();
Ich habe dies geschrieben, um den MS Excel-Spaltencode (A, B, C, ..., Z, AA, AB, ..., ZZ, AAA, AAB, ...) basierend auf einem 1-basierten Index zu erhalten. (Natürlich wird beim Umschalten auf Null einfach das column--;
am Anfang weggelassen.)
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
durch String.valueOf
macht es in Java :)
Angenommen, Sie meinen die Buchstaben des englischen Alphabets ...
for ( int i = 0; i < 26; i++ )
{
Console.WriteLine( Convert.ToChar( i + 65 ) );
}
Console.WriteLine( "Press any key to continue." );
Console.ReadKey();
Sie könnten so etwas tun, basierend auf den ASCII-Werten der Zeichen:
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
}
(Siehe die Tabelle hier .) Sie wandeln nur vom int-Wert des Zeichens in den Zeichenwert um - dies funktioniert jedoch nur für ASCII-Zeichen, nicht für verschiedene Sprachen usw.
EDIT: Wie von Mehrdad im Kommentar zu einer ähnlichen Lösung vorgeschlagen, ist es besser, dies zu tun:
alphabet[i] = (char)(i+(int)('A'));
Dies setzt das A-Zeichen auf seinen int-Wert und erhöht es dann basierend darauf, sodass es nicht fest codiert ist.
char[] alphabet = new char[26];
?
Beachten Sie auch, dass die Zeichenfolge einen Operator [] hat, der ein Zeichen zurückgibt, und ein ist IEnumerable<char>
, sodass Sie für die meisten Zwecke eine Zeichenfolge als Zeichen [] verwenden können. Daher:
string alpha = "ABCDEFGHIJKLMNOPQRSTUVQXYZ";
for (int i =0; i < 26; ++i)
{
Console.WriteLine(alpha[i]);
}
foreach(char c in alpha)
{
Console.WriteLine(c);
}
Überrascht hat niemand eine Ausbeutelösung vorgeschlagen:
public static IEnumerable<char> Alphabet()
{
for (char letter = 'A'; letter <= 'Z'; letter++)
{
yield return letter;
}
}
Beispiel:
foreach (var c in Alphabet())
{
Console.Write(c);
}
for
Schleife zu schreiben .
yield return
Teil meinen , ist es nicht wirklich gleichbedeutend mit einer for-Schleife. Es ist so, dass es verwendet werden könnte, um eine unendliche Reihe träge zurückzugeben.
while
einen Zähler haben, der jede Runde erhöht und mit einem festen Wert endet. Genau das for
sollte ersetzen.
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';
einfache Anführungszeichen anstelle von doppelten Anführungszeichen.
//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
und while
Anweisungen)
4 Möglichkeiten, um das englische Alphabet in der Konsole zu erhalten:
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()}");
}
}