我想从现有数组创建一个新数组

本文关键字:数组 一个 新数组 创建 | 更新日期: 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

的20个元素的多个块

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变量…如果这是你想要的,希望这对你有帮助。