根据索引将空字符串插入到数组中

时间:2015-07-01 14:41:00

标签: c# arrays

假设我有一个数组,例如

string[] A = {"1","2","3","4","5"}

我希望数组的大小为10,并希望在某个索引后插入空字符串。

例如,我可以将其设置为10并在索引3之后插入字符串,这将导致

A = {"1","2","3","4","","","","","","5"}

基本上,给定索引之后的元素将被推送到结尾,空白字符串将占用其间的空白空间。

这是我尝试过的,但它只添加了一个字符串,并没有精确设置数组的大小

var foos = new List<string>(A);
foos.Insert(33, "");
foos[32] = "";
A = foos.ToArray();

5 个答案:

答案 0 :(得分:4)

您可以使用InsertRange

var l = new List<string>{"1","2","3","4","5"};
l.InsertRange(3, new string[10 - l.Count]);
foreach(var i in l)
    Console.WriteLine(i);

注意:上面没有填充空字符串但是空值,但您可以轻松修改用于填充所需默认值的new string[]

例如;见How to populate/instantiate a C# array with a single value?

答案 1 :(得分:2)

以下是基于LINQ的方法:

public string[] InsertToArray(string[] array, int index, int newArrayCapacity)
{
    var firstPart = array.Take(index + 1);
    var secondPart = array.Skip(index + 1);
    var newPart = Enumerable.Repeat(String.Empty, newArrayCapacity - array.Length);
    return firstPart.Concat(newPart).Concat(secondPart).ToArray();
}

以下是该方法的用法:

string[] A = {"1","2","3","4","5"};

// Insert 5 elements (so that A.Length will be 10) in A after 3rd element
var result = InsertToArray(A, 3, 10);


已添加:请参阅Sayse的回答,真的是要走的路

答案 2 :(得分:0)

如果你不介意使用列表而不是数组,你可以这样做:

int index = 3;
int numberOfBlanksToInsert = 5;
List<string> strings = new List<string>();
for (int i = 0; i < numberOfBlanksToInsert; i++)
{
    strings.Insert(index, "");
}

您还可以在完成后将其输出到数组:

string[] A = strings.ToArray();

答案 3 :(得分:0)

由于数组是固定大小的集合,因此无法调整数组的大小。您需要做的是拆分数组元素,需要获取指定索引之前和之后的元素,您可以使用{ {1}}和Skip方法,然后您需要生成一系列空字符串并将它们放在一起:

Take

答案 4 :(得分:0)

    static string[] InsertRange(string[] initialValues, int startIndex, int count, string toInsert)
    {
        string[] result = new string[initialValues.Length + count];
        for (int i = 0; i < initialValues.Length + count; i++)
            result[i] = i < startIndex ? initialValues[i] : i >= startIndex + count ? initialValues[i - count] : toInsert;
        return result;
    }

用法:InsertRange(A, 4, 5, "hello");

输出:&#34; 1,2,3,4,你好,你好,你好,你好,你好,5&#34;