用LINQ切割字符串

时间:2014-09-03 19:21:17

标签: c# string linq

我想用LINQ来实现这个目标:

拥有类似"abcdefghijk"的字符串和“chunk size”3,

  • LINQ查询应该返回

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

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

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

1 个答案:

答案 0 :(得分:4)

您可以使用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();