我想从现有数组创建一个新数组
本文关键字:数组 一个 新数组 创建 | 更新日期: 2023-09-27 18:11:01
我今天的问题是关于从现有的一个创建一个数组。我的"父"数组包含两个字符的元素。我的新数组的元素应该包含来自"父"数组的20个元素。
例子:
string[] parentArray = {aa, bb, cc, df, ds, aa, zz, xx, cc, ww, fg, qq, ww, ee,
key: (0) (1) (2) (3) (4) (6) (7) (8) (9) (10)........ rr, dd, ss, qq, dd, ss, sa, wq, ee, rr}
string[] childArray = {aabbccdfdsaazzxxccwwfgqqwweerrddssqqddss,.....}
(1)
使用一些枚举扩展函数,您可以在这里走很长的路。
int cursor = 0;
List<string> result = new List<string>();
while (cursor < parentArray.Length)
{
result.Add(String.Join("", parentArray.Skip(cursor).Take(20)));
cursor += 20;
}
string[] childArray = result.ToArray();
这个函数遍历你的数组,获取20个元素(如果没有剩下20个元素,则获取更少),并将它们合并成一个字符串,并将该字符串添加到列表中。我使用了String.Join
方法来连接字符串。
Skip
函数和Take
函数是IEnumerable
的扩展函数。
编辑:我确实假设您的源数组较长,并且可能包含需要移动到childArray
EDIT2:如果您在parentArray
中有一个负载值,您可能想要采用不同的方式,以获得更多的性能。在这种情况下,我建议使用StringBuilder
.
var builder = new Text.StringBuilder();
List<string> result = new List<string>();
for (int cursor = 0; cursor < parentArray.Length; cursor++)
{
if (builder.Length > 0 && (cursor % 20) == 0)
{
result.Add(builder.ToString());
builder.Length = 0;
}
builder.Append(parentArray[cursor]);
}
/* At this point you can choose to add the remaining elements to the list or not. */
if (builder.Length > 0)
{
result.Add(builder.ToString());
}
string[] childArray = result.ToArray();
听起来好像一个简单的linq语句就能满足您的需求:
var myArr = parent.Take(20).ToArray();
这将选择parent
-数组的前20个元素。
编辑:要对parent
中的所有元素执行此操作,循环其条目:
List<string> result= new List<string>();
while(parent.Any()) {
result.Add(String.Join("", parent.Take(20).ToArray());
parent = parent.Skip(20).ToArray();
}
最后使用result.ToArray
将列表转换回数组。
可以在父数组上创建for循环,并将数组中的元素添加到字符串中,如下所示
String str="";
for (int i=0;i<count(parent);i++){
str+=parent[i].tostring();
}
然后创建一个新的字符串数组,在第一个索引处放置str变量…如果这是你想要的,希望这对你有帮助。