好的,所以我有这个字符串数组看起来像这样:
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...
Run Code Online (Sandbox Code Playgroud)
我想创建一个多维数组,使用每个元素的第一部分作为"键".简而言之:
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" |
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的:
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;
}
Run Code Online (Sandbox Code Playgroud)
有一些简单的方法吗?
在我看来,你需要把它分成两个阶段:
其中每个都相当简单,但如果将它们分开,您会发现代码更简单.就像是:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是,您应该添加验证:
input 不应该为空input 不应该是空的请注意,上面的代码将第一行拆分两次(一次查找大小,一次填充数据).虽然你可以修复它以提高效率,但它会使代码更难看 - 我不会这样做,除非你真的发现它是一个瓶颈.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |