Effizientes Aufteilen von Strings in benutzerdefinierte Blöcke in C#
Dieser Artikel demonstriert eine C#-Methode zum Aufteilen einer Zeichenfolge in kleinere, gleich große Segmente. Stellen Sie sich vor, Sie haben eine lange Zeichenfolge:
<code class="language-csharp">string longString = "1111222233334444";</code>
Und Sie müssen es in Abschnitte mit einer bestimmten Länge aufteilen, beispielsweise jeweils 4 Zeichen. Die gewünschte Ausgabe wäre:
<code>"1111" "2222" "3333" "4444"</code>
Die Lösung: Ein klarer und prägnanter Ansatz
Der effizienteste Weg, dies zu erreichen, ist die Verwendung der Methoden Enumerable.Range
und Select
von LINQ:
<code class="language-csharp">static IEnumerable<string> ChunkifyString(string str, int chunkSize) { if (string.IsNullOrEmpty(str) || chunkSize <= 0) { yield break; // Handle null, empty, or invalid chunk size } for (int i = 0; i < str.Length; i += chunkSize) { yield return str.Substring(i, Math.Min(chunkSize, str.Length - i)); } }</code>
Diese verbesserte Methode verwendet eine for
-Schleife und yield return
für eine bessere Leistung, insbesondere bei sehr großen Zeichenfolgen. Es verarbeitet außerdem explizit Null- oder leere Eingabezeichenfolgen und nicht positive Blockgrößen, wodurch es robuster wird. Die Funktion Math.Min
stellt sicher, dass der letzte Block die verbleibende Länge der Zeichenfolge nicht überschreitet.
Verwendungsbeispiel:
<code class="language-csharp">string myString = "111122223333444455"; int chunkSize = 4; foreach (string chunk in ChunkifyString(myString, chunkSize)) { Console.WriteLine(chunk); }</code>
Dies wird Folgendes ausgeben:
<code>1111 2222 3333 4444 55</code>
Dieser Ansatz geht elegant mit Zeichenfolgen um, deren Länge nicht perfekt durch die Blockgröße teilbar ist, und stellt sicher, dass alle Zeichen in den resultierenden Blöcken enthalten sind. Diese Lösung ist sowohl prägnant als auch effizient und eignet sich daher ideal für verschiedene Aufgaben zur Saitenmanipulation.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Zeichenfolge in C-#in Custom-Größe-Segmente einteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!