Memisahkan Rentetan dengan Cekap kepada Potongan Bersaiz Tersuai dalam C#
Artikel ini menunjukkan kaedah C# untuk membahagikan rentetan kepada segmen yang lebih kecil dan bersaiz sama. Bayangkan anda mempunyai tali panjang:
<code class="language-csharp">string longString = "1111222233334444";</code>
Dan anda perlu memecahkannya menjadi kepingan dengan panjang tertentu, katakan 4 aksara setiap satu. Output yang dikehendaki ialah:
<code>"1111" "2222" "3333" "4444"</code>
Penyelesaian: Pendekatan Bersih dan Ringkas
Cara paling berkesan untuk mencapai ini ialah menggunakan kaedah Enumerable.Range
dan Select
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>
Kaedah yang dipertingkat ini menggunakan gelung for
dan yield return
untuk prestasi yang lebih baik, terutamanya dengan rentetan yang sangat besar. Ia juga secara eksplisit mengendalikan rentetan input kosong atau kosong dan saiz ketulan bukan positif, menjadikannya lebih teguh. Fungsi Math.Min
memastikan bahagian terakhir tidak melebihi panjang baki rentetan.
Contoh Penggunaan:
<code class="language-csharp">string myString = "111122223333444455"; int chunkSize = 4; foreach (string chunk in ChunkifyString(myString, chunkSize)) { Console.WriteLine(chunk); }</code>
Ini akan menghasilkan:
<code>1111 2222 3333 4444 55</code>
Pendekatan ini dengan elegan mengendalikan rentetan yang panjangnya tidak boleh dibahagikan dengan sempurna dengan saiz bongkah, memastikan semua aksara disertakan dalam ketulan yang terhasil. Penyelesaian ini ringkas dan cekap, menjadikannya sesuai untuk pelbagai tugas manipulasi rentetan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memainkan rentetan ke dalam segmen bersaiz tersuai di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!