我的c#
代码存在问题。
我有一个字符串数组,每行有23个值,用分号分隔。 我想拆分每个值并将其解析为2D [double]数组,它应该如下所示:
[(行数),22]。
字符串数组如下所示:
[0] 0,00; 111.00; 0,00; -1,00; -1,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,10; -0,10; -1,00; -1,00; 0,00; 0,00; 0,00; 0,00; 0,00
[1] 0,00; 120,00; 0,00; -1,00; -1,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,00; 0,10; -0,10; -1,00; -1,00; 0,00; 0,00; 0,00; 0,00; 0,00
双数组应如下所示:
[0,0] 0,00
[0,1] 111,00
[0,2] 0,00
[0,3] -1,00
等等。
你有什么想法吗?
这是我目前的代码,但不起作用。
double[,] values = new double[z, 22];
char[] seperator = { ';' };
int x = 0;
for (int i = 0; i < z; i++) {
for (int j = 0; j < 22; j++) {
values[i, j] = Data[x].Split(seperator);
x++;
}
}
答案 0 :(得分:1)
如何实现这一目标:
如果你使用double,我会在这里使用decimal,它会从0
之类的字符串中获得结果0,00
。所以你可以使用double,但如果可以,它会缩短它。像0,00
这样的字符串的英特尔十进制将为0.00
string[] arr = new string[] { "0,00;111,00;0,00;-1,00;-1,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,10;-0,10;-1,00;-1,00;0,00;0,00;0,00;0,00;0,00" , "0,00;120,00;0,00;-1,00;-1,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,10;-0,10;-1,00;-1,00;0,00;0,00;0,00;0,00;0,00" };
// array conaining decimals
decimal[,] numbers = new decimal[2,23];
// loop thrue strings in arr
for (int i = 0; i < arr.Length; i++)
{
// split that string by ';'
string[] numberStrings = arr[i].Split(';');
// loop thrue the result of the splitted strings
for (int j = 0; j < numberStrings.Length; j++)
{
// parse that number from splitted string to decimal an put it on his place in the 2d array
numbers[i, j] = decimal.Parse(numberStrings[j]);
}
}
答案 1 :(得分:0)
请尝试使用此代码。
String a1 = "0,00;111,00;0,00;-1,00;-1,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,00;0,10;-0,10;-1,00;-1,00;0,00;0,00;0,00;0,00;0,00";
// new array split string by ';'
String[] arr1 = a1.Split(';');
int count = 0;
Console.WriteLine("\n\n\n-----------\nType 1 (only 1 array) \n-----------\n\n\n");
while ( count <= arr1.Length -1){
Console.WriteLine(arr1[count].ToString());
count++;
}
Console.WriteLine("\n\n\n-----------\nType 2 (multidimensional array) \n-----------\n\n\n");
// new array split string by ';' and ','
String[] arr2 = a1.Split(';');
string[,] arrFinal = new string[23,2];
// re-start counter
count = 0;
while (count <= arr2.Length - 1)
{
arrFinal[count, 0] = arr2[count].ToString().Split(',')[0];
arrFinal[count, 1] = arr2[count].ToString().Split(',')[1];
Console.WriteLine(arr2[count].ToString());
Console.WriteLine("item ({0},{1}) = {2} | item ({3},{4}) = {5} ", count, "0", arrFinal[count, 0], count, "1", arrFinal[count, 1], arrFinal[count, 1] );
count++;
}