在C#中拆分数组

时间:2011-12-22 10:17:33

标签: c# string

如何将一个字符串类型数组平均分成几个数组。
例如。
string [] input = {“a”,“b”,“c”,“”,“d” ,“e”,“f”}动态设置{string [] output =“a”,“b”,“c”,“”//第一次 string [] output =“d”,“e”,“f”,“”// second timetime}

2 个答案:

答案 0 :(得分:1)

String[] splitString(int len, string input)
{
  int idx = 0;
  List<string> ret = new List<string>();
  while(idx < input.Length)
  {
    if (idx+len > input.Length)
      ret.Add(input.Substring(idx));
    else
      ret.Add(input.Substring(idx,len));
    idx+=len;
  }
  return ret.ToArray();
}

答案 1 :(得分:1)

前段时间我在C#中用Ruby实现了Enumerable#each_slice,看来你可以用它来得到你想要的东西。

static class ExtentionsMethods
{
    public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> seq, int size)
    {
        while (seq.Any())
        {
            yield return seq.Take(size);
            seq = seq.Skip(size);
        }
    }
}

然后你就

var str = "1234567890";
var res = str.Split(5);

但由于结果是IEnumerable IEnumerable<char>,您可能还想

var arr = res.Select(c => String.Join("", c)).ToArray();

获得

  

arr {string [2]}
      [0]:“12345”
      [1]:“67890”