我该如何划分的数组在C#中单独的数组? [英] How do I divide an array into separate arrays in C#?
问题描述
我想写把字符串数组成的 N 的独立阵列的方法,每个大约是我指定的大小。
例如,如果我想的阵列划分了23元,那么如果我指定7作为元素的大致数量:
8月1日元素的数组
第二个数组元素8
具有7个元素的数组第3
另一个例子是,如果有100个元素,我指定每个阵列18个元素,那么:
1个数组20
第二阵20
第三阵20
第四阵20
5阵列20
到目前为止,我知道该函数需要返回字符串数组列表,但我不知道该怎么办过去认为:
私人列表<字符串[]> divStrings(INT ExpectedStringsPerArray,
字符串[] AllStrings)
{
// ...
}
阵列的数量将是
Math.Floor(AllStrings.Count()/ ExpectedStringsPerArray)
我如何划分一个数组单独的数组在C#?
我大概间preT你的问题错了,因为这似乎太容易了:
- 确定成多少个阵列源阵列将被划分。 ( TOTALCOUNT / elementsPerArray 的)
- 对于每个数组:
- 确定有多少元素把它。 ( elementsRemaining / arraysRemaining 的)
- 的元素复制到一个新的数组。
在code:
私有静态列表<字符串[]> DivideStrings(INT expectedStringsPerArray,字符串[] allStrings)
{
清单<字符串[]>阵列=新的List<字符串[]>(); INT arrayCount = allStrings.Length / expectedStringsPerArray; INT elemsRemaining = allStrings.Length;
对于(INT arrsRemaining = arrayCount; arrsRemaining> = 1; arrsRemaining--)
{
INT与elementCount = elemsRemaining / arrsRemaining; String []数组= CopyPart(allStrings,elemsRemaining - elementCount中,elementCount中);
arrays.Insert(0,数组); elemsRemaining - = elementCount中;
} 返回数组;
}
 
私有静态T [] CopyPart< T>(T []数组,INT指数,INT长度)
{
T [] newArray =新的T [长度]
Array.Copy(阵列,索引,newArray,0,长度);
返回newArray;
}
当像这样使用:
const int的数= 23;
const int的估计值= 7;
字符串[]字符串= Enumerable.Range(1,计数)。选择(S = GT; s.ToString())。ToArray的();
VAR列表= DivideStrings(估计字符串);
的foreach(在列表VAR ARR)
Console.WriteLine(的string.join(,ARR));
它打印:
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23
I want to write a method that divides an array of strings into a n separate arrays, each of which is approximately the size I specify.
For example, if the array I want to divide had 23 elements, then if I specify 7 as the approximate number of elements:
1st array with 8 elements
2nd array with 8 elements
3rd array with 7 elements
Another example is if there were 100 elements and I specify 18 elements per array, then:
1st array 20
2nd array 20
3rd array 20
4th array 20
5th array 20
So far, I know that The function needs to return a list of string arrays, but I don't know what to do past that:
private List<string[]> divStrings(int ExpectedStringsPerArray,
string[] AllStrings)
{
// ...
}
The number of arrays will be
Math.Floor(AllStrings.Count()/ExpectedStringsPerArray)
How do I divide an array into separate arrays in C#?
I probably interpret your question wrong, as this seems too easy:
- Determine into how many arrays the source array will be divided. (totalCount / elementsPerArray)
- For each array:
- Determine how many elements to put in it. (elementsRemaining / arraysRemaining)
- Copy those elements to a new array.
In code:
private static List<string[]> DivideStrings(int expectedStringsPerArray, string[] allStrings)
{
List<string[]> arrays = new List<string[]>();
int arrayCount = allStrings.Length / expectedStringsPerArray;
int elemsRemaining = allStrings.Length;
for (int arrsRemaining = arrayCount; arrsRemaining >= 1; arrsRemaining--)
{
int elementCount = elemsRemaining / arrsRemaining;
string[] array = CopyPart(allStrings, elemsRemaining - elementCount, elementCount);
arrays.Insert(0, array);
elemsRemaining -= elementCount;
}
return arrays;
}
private static T[] CopyPart<T>(T[] array, int index, int length)
{
T[] newArray = new T[length];
Array.Copy(array, index, newArray, 0, length);
return newArray;
}
When used like this:
const int count = 23;
const int estimate = 7;
string[] strings = Enumerable.Range(1, count).Select(s => s.ToString()).ToArray();
var list = DivideStrings(estimate, strings);
foreach (var arr in list)
Console.WriteLine(String.Join(" ", arr));
It prints:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
这篇关于我该如何划分的数组在C#中单独的数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!