我有一个驱动器号的数组,我需要在每个字母后附加冒号,然后将数组传递给另一个函数。我可以这样做还是需要创建一个新阵列?或者可能不是一个数组,而是某种类型的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:
感谢。
答案 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();