Chopping string with LINQ

本文关键字:LINQ with string Chopping | 更新日期: 2023-09-27 18:20:42

我想使用LINQ来实现这一点:

具有类似"abcdefghijk"的字符串和3的"块大小",

  • LINQ查询应返回

    {"abc", "def", "ghi", "jk" }
    
  • 块大小为4:

    {"abcd", "efgh", "ijk" }
    

我几乎可以肯定我必须使用TakeWhile或Zip,但我不知道如何使用它们!

Chopping string with LINQ

您可以使用MoreLinq库中的Batch方法:

var chunks = str.Batch(4).Select(x => new string(x.ToArray()).ToList();

这也可以用GroupBy完成,但代码看起来不会那么漂亮:

var chunks = str
          .Select((x,idx) => new { x, idx })
          .GroupBy(c => c.idx / 4)
          .Select(g => new string(g.Select(c => c.x).ToArray()))
          .ToList();