C# 编辑数组元素
我有一个驱动器号数组,需要在每个驱动器号后面加一个冒号,然后将数组传递给另一个函数。我可以这样做还是需要创建一个新数组?或者可能根本不是数组,而是某种列表C# 编辑数组元素,c#,arrays,C#,Arrays,我有一个驱动器号数组,需要在每个驱动器号后面加一个冒号,然后将数组传递给另一个函数。我可以这样做还是需要创建一个新数组?或者可能根本不是数组,而是某种列表 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";
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:
谢谢。将for循环替换为
string[] resultArray = sourcearray.Select(s => s + ":").ToArray();
重新编辑:
string source = "C|D|E|";
这里最好的解决方案是对string.Split()
方法的特殊修改。不幸的是,需要一个分隔符数组,因此我们得到:
sourceArray = source.Split(new char[] {'|'},
StringSplitOptions.RemoveEmptyEntries);
字符串是不可变的,因此不能更改字符串实例,但必须使用新字符串更改数组插槽:
string source = "C|D|E";
string[] sourcearray = source.Split(new []{'|'}, StringSplitOptions.RemoveEmptyEntries);
for(int i=0; i < sourcearray.Length; i++)
{
sourcearray[i] = sourcearray[i] + ":";
}
string source=“C | D | E”;
string[]sourcearray=source.Split(新的[]{'|'},StringSplitOptions.RemoveEmptyEntries);
for(int i=0;i
for(var i=0;i
这家伙显然是C#的新手,我不确定Lambda表达式是否是合适的解决方案…@KristianFenn:这就是为什么他需要了解Lambda表达式的原因。谢谢。编辑了特定情况下的问题。@SixHouse:您可以使用Split重载跳过空条目,请检查我的编辑。对于编辑:您可以告诉Split函数忽略空值。检查函数重载。
for (var i = 0; i < sourcearray.Length; i++)
{
sourceArray[i] += ":";
}
string[] sourcearray = source.Split('|').Select(s => s + ":").ToArray();
var newArray = source.Split('|').Select(s => s + ":").ToArray();