将String []与分隔符分开并将其转换为2D数组

时间:2017-05-14 12:47:47

标签: c# arrays

我的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++;                                                
    }
}

2 个答案:

答案 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++;
        }