编辑数组元素

时间:2011-11-10 13:17:57

标签: c# arrays

我有一个驱动器号的数组,我需要在每个字母后附加冒号,然后将数组传递给另一个函数。我可以这样做还是需要创建一个新阵列?或者可能不是一个数组,而是某种类型的List?

string source = "C|D|E";
string[] sourcearray = source.Split('|');
foreach (string driveletter in sourcearray)
{
    //need to append ":" to each drive letter
}

编辑:有时源数组可能以管道结束:

string source = "C|D|E|";

当发生这种情况时,如果我使用公共for循环,则数组中的最后一个元素将是冒号,而我无法做到这一点。如何最好地处理这个?发生这种情况时,最终数组需要如下所示:

C: D: E:

感谢。

5 个答案:

答案 0 :(得分:3)

字符串是不可变的,因此您无法更改字符串实例,但必须使用新字符串更改数组插槽:

string source = "C|D|E";
string[] sourcearray = source.Split(new []{'|'}, StringSplitOptions.RemoveEmptyEntries);
for(int i=0; i < sourcearray.Length; i++)
{
   sourcearray[i] = sourcearray[i] + ":";
}

答案 1 :(得分:2)

替换你的for循环
 string[] resultArray = sourcearray.Select(s => s + ":").ToArray();

重新编辑:

  string source = "C|D|E|";

这里最好的解决方案是string.Split()方法的特殊变体。不幸的是,需要一个分隔符字符数组,所以我们得到:

sourceArray = source.Split(new char[] {'|'}, 
          StringSplitOptions.RemoveEmptyEntries);

答案 2 :(得分:1)

for (var i = 0; i < sourcearray.Length; i++)
{
   sourceArray[i] += ":";
}

答案 3 :(得分:0)

string[] sourcearray = source.Split('|').Select(s => s + ":").ToArray();

答案 4 :(得分:0)

var newArray = source.Split('|').Select(s => s + ":").ToArray();