好的,所以我有这个字符串数组看起来像这样:
myArray[0] = "a0,b0,c0,d0"
myArray[1] = "a1,b1,c1,d1"
myArray[2] = "a2,b2,c2,d2"
myArray[3] = "a3,b3,c3,d3"
etc...
我想创建一个多维数组,使用每个元素的第一部分作为“键”。简而言之:
myMultiArray:
x/y| 0 | 1 | 2 | 3 |
------------------------
0 | "a0" | "a1" | "a2" | "a3" |
1 | "b0" | "b1" | "b2" | "b3" |
2 | "c0" | "c1" | "c2" | "c3" |
3 | "d0" | "d1" | "d2" | "d3" |
这就是我所拥有的:
private String[,] resultsParser(String[] inputArray)
{
String[] splittedString = null;
String[,] outputString = null;
for (int i = 0; i < inputArray.Length; i++ )
{
splitString = inputArray[i].Split(',');
for (int j = 0; j < outputArray.GetLength(0); j++)
{
if (splitString[0] == outputArray[j, 0])
{
for (int k = 1; k < splitString.Length; k++)
{
outputArray[j, k] = splitString[k];
}
}
}
for (int k = 0; k < splitString.Length; k++)
{
outputArray[outputArray.GetLength(0), k] = splitString[k];
}
}
return outputArray;
}
有一些简单的方法吗?
答案 0 :(得分:5)
在我看来,你需要把它分成两个阶段:
其中每个都相当简单,但如果将它们分开,您会发现代码更简单。类似的东西:
public static string[,] SplitResults(string[] input)
{
int columns = input[0].Split(',').Length;
string[,] output = new string[input.Length, columns];
for (int row = 0; row < input.Length; row++)
{
string[] split = input[row].Split(',');
for (int column = 0; column < columns; column++)
{
output[row, column] = split[column];
}
}
return output;
}
但是,您应该添加验证:
input
不应为null input
不应为空请注意,上面的代码将第一行拆分两次(一次查找大小,一次填充数据)。虽然你可以修复它以提高效率,但它会使代码更难看 - 我不会这样做,除非你真的发现它是一个瓶颈。
答案 1 :(得分:1)
您是否必须创建多维数组string[,]
?因为创建锯齿状数组非常容易,string[][]
:
string[][] newArray = new string[inputArray.Count][];
for (int i = 0; i < inputArray.Count; ++i)
{
newArray[i] = inputArray[i].Split(',');
}
答案 2 :(得分:0)
private String[,] resultsParser(params String[] input){
String[,] array = new String[input.Length, input[0].length];//x is the total elements, y is the elements in each array
for ( int i = 0 ; i < input.Length ; i++ ){
array[i] = input[i];
}
return array;
}
这未经过测试,但我相信它应该可行