C# で文字列をカスタム サイズのチャンクに効率的に分割する
この記事では、文字列をより小さな同じサイズのセグメントに分割する C# メソッドを示します。 長い文字列があると想像してください:
<code class="language-csharp">string longString = "1111222233334444";</code>
そして、それを特定の長さのチャンク (それぞれ 4 文字など) に分割する必要があります。望ましい出力は次のようになります:
<code>"1111" "2222" "3333" "4444"</code>
解決策: 明確で簡潔なアプローチ
これを実現する最も効率的な方法は、LINQ の Enumerable.Range
メソッドと Select
メソッドを使用することです。
<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>
この改良されたメソッドでは、for
ループと yield return
を使用して、特に非常に大きな文字列のパフォーマンスを向上させます。 また、null または空の入力文字列と非正のチャンク サイズを明示的に処理するため、より堅牢になります。 Math.Min
関数は、最後のチャンクが文字列の残りの長さを超えないことを保証します。
使用例:
<code class="language-csharp">string myString = "111122223333444455"; int chunkSize = 4; foreach (string chunk in ChunkifyString(myString, chunkSize)) { Console.WriteLine(chunk); }</code>
これは出力します:
<code>1111 2222 3333 4444 55</code>
このアプローチは、チャンク サイズで完全に割り切れない長さの文字列をエレガントに処理し、結果のチャンクにすべての文字が含まれるようにします。 このソリューションは簡潔かつ効率的であり、さまざまな文字列操作タスクに最適です。
以上が文字列をC#のカスタムサイズのセグメントにチャンキングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。