Fractionnement efficace des chaînes en morceaux de taille personnalisée en C #
Cet article démontre une méthode C # pour diviser une chaîne en segments plus petits et de taille égale. Imaginez que vous avez une longue chaîne:
<code class="language-csharp">string longString = "1111222233334444";</code>
Et vous devez le diviser en morceaux d'une longueur spécifique, disons 4 caractères chacun. La sortie souhaitée serait:
<code>"1111" "2222" "3333" "4444"</code>
La solution: une approche propre et concise
La façon la plus efficace d'y parvenir est d'utiliser les méthodes de Linq Enumerable.Range
et 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>
Cette méthode améliorée utilise une boucle for
et yield return
pour de meilleures performances, en particulier avec des chaînes très grandes. Il gère également explicitement les chaînes d'entrée nulles ou vides et les tailles de morceaux non positives, ce qui le rend plus robuste. La fonction Math.Min
garantit que le dernier morceau ne dépasse pas la longueur restante de la chaîne.
Exemple d'utilisation:
<code class="language-csharp">string myString = "111122223333444455"; int chunkSize = 4; foreach (string chunk in ChunkifyString(myString, chunkSize)) { Console.WriteLine(chunk); }</code>
Ceci sera sorti:
<code>1111 2222 3333 4444 55</code>
Cette approche gère élégamment les chaînes dont les longueurs ne sont pas parfaitement divisibles par la taille du morceau, garantissant que tous les personnages sont inclus dans les morceaux résultants. Cette solution est à la fois concise et efficace, ce qui le rend idéal pour diverses tâches de manipulation de cordes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!