Was ist der beste Weg, um die einzelnen Zeichen in einem Array von Strings strArr
in ein Array dieser Zeichen zu trennen charArr
, wie unten dargestellt?Wie kann ich eine Reihe von Zeichenfolgen in ihre Bestandteile in C# teilen?
string[] strArr = { "123", "456", "789" };
char[] chrArr = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
Das ist, was ich derzeit tue, aber ich glaube nicht, dass es sehr elegant ist:
char[] chrArr = string.Join(string.Empty, strArr).ToCharArray();
:
int characterCount = 0;
for (int i = 0; i < strArr.Length; i++)
{
characterCount += strArr[i].Length;
}
int indexCount = 0;
char[] chrArr = new char[characterCount];
for (int i = 0; i < strArr.Length; i++)
{
for (int j = 0; j < strArr[i].Length; j++)
{
chrArr[indexCount] = strArr[i][j];
indexCount++;
}
}
Das ist wirklich dumm zu sein scheint. LINQ scheint viel intuitiver und geeigneter ... –
Bitte definieren Sie "geeignet". Ein einfacher Leistungstest zeigt, dass meine Linie die SelectMany-Linie um den Faktor 8 übersteigt. Da keiner der beiden spezifische Vorteile zu bieten scheint (wie Edgecases oder was auch immer besser), würde ich die schnellere nehmen, wenn ich kann. Persönlich habe ich nicht das Gefühl, dass sie in Bezug auf die Lesbarkeit so verschieden sind. –
* geeignet * (adj.): Geeignet oder angemessen unter den gegebenen Umständen. :) - Ich habe nicht gesagt, dass du falsch liegst. Ich habe einfach gesagt, dass es "intuitiver" (oder C# idiomatisch) zu sein scheint, LINQ zu verwenden. Fühlen Sie sich frei zu widersprechen. –