首页 > 后端开发 > C++ > 如何在 C# 中将字符串分块为自定义大小的段?

如何在 C# 中将字符串分块为自定义大小的段?

Barbara Streisand
发布: 2025-01-27 01:26:09
原创
998 人浏览过

How Can I Chunkify a String into Custom-Sized Segments in C#?

在 C# 中有效地将字符串拆分为自定义大小的块

本文演示了一种将字符串划分为更小、大小相等的段的 C# 方法。 想象你有一个很长的字符串:

<code class="language-csharp">string longString = "1111222233334444";</code>
登录后复制

并且您需要将其分成特定长度的块,例如每个 4 个字符。所需的输出将是:

<code>"1111"
"2222"
"3333"
"4444"</code>
登录后复制

解决方案:干净简洁的方法

实现此目的最有效的方法是使用 LINQ 的 Enumerable.RangeSelect 方法:

<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 来获得更好的性能,尤其是对于非常大的字符串。 它还显式处理空或空输入字符串以及非正块大小,使其更加健壮。 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板