当前位置: 代码迷 >> C# >> 请教一个数组如何分成若干个小数组
  详细解决方案

请教一个数组如何分成若干个小数组

热度:315   发布时间:2016-05-05 05:13:30.0
请问一个数组怎么分成若干个小数组?
一个数组里的数据,需要按照3的倍数,分成若干个小数组,小的数组可以放到ArrayList 或则 List<string[]>
比如一个字符串数组 string[] a = new string[]{"a","b","c","d","e","f","g","h"}  (里面字符的个数不定)
分完就是  abc一个数组  def一个数组  gf一个数组 ,这些小数组在放到ArrayList 或则 List<string[]> 里。
------解决思路----------------------
为什么要分?直接指定数组序号就好了
------解决思路----------------------

            List<string[]> list = new List<string[]>();
            string[] a = new string[] { "a", "b", "c", "d", "e", "f", "g", "h" };
            for (int i = 0; i < a.Length; i+=3)
            {
                if (a.Length-i-1<3)
                    list.Add(a.Where((str, index) => index >= i && index < a.Length).ToArray());
                else
                    list.Add(a.Where((str, index) => index >= i && index < i + 3).ToArray());
            }

------解决思路----------------------
string[] strArray = new string[] { "a", "b", "c", "d", "e", "f", "g", "h" };
            List<string[]> lstArray = new List<string[]>();

            for (int i = 0, j = 0; i < Math.Ceiling(strArray.Length / 3m); i++, j = j + 3)
            {
                lstArray.Add(SplitArray(strArray, j, 3));
            }
static string[] SplitArray(string[] Source, int StartIndex, int Len)
        {
            string[] result = new string[Len];
            for (int i = 0; i < Len; i++)
            {
                result[i] = i + StartIndex > Source.Length - 1 ? "" : Source[i + StartIndex];
            }
            return result;
        }

------解决思路----------------------
搜索  linq 的Take与Skip函数。不难写出来
------解决思路----------------------
有点小错误
string[][] s=new string[a.Length/3][3];
  相关解决方案