HOW TO CONVERT JAGGED ARRAY TO 2D ARRAY?

Royce Roy

Total Post:149

Points:1043
Posted by  Royce Roy
C# 
C#
 1741  View(s)
Ratings:
Rate this:

I have a file file.txt with the following:

6,73,6,71

32,1,0,12

3,11,1,134

43,15,43,6

55,0,4,12

And this code to read it and feed it to a jagged array:

    string[][] arr = new string[5][];

    string[] filelines = File.ReadAllLines("file.txt");

    for (int i = 0; i < filelines.Length; i++)

    {

        arr[i] = filelines[i].Split(',').ToArray();

    }

How would I do the same thing, but with a 2D array?

  1. Pravesh Singh

    Post:412

    Points:2888
    Re: How to convert jagged array to 2D array?

    Hi Royce,

     

    Assuming you know the dimensions of your 2D array (or at least the maximum dimensions) before you start reading the file, you can do something like this:

     

    string[,] arr = new string[5,4];

    string[] filelines = File.ReadAllLines("file.txt");

    for (int i = 0; i < filelines.Length; i++)

    {

        var parts = filelines[i].Split(',');    // Note: no need for .ToArray()

        for (int j = 0; j < parts.Length; j++)

        {

            arr[i, j] = parts[j];

        }

    }

    If you don't know the dimensions, or if the number of integers on each line may vary, your current code will work, and you can use a little Linq to convert the array after you've read it all in:

    string[] filelines = File.ReadAllLines("file.txt");

    string[][] arr = new string[filelines.Length][];

    for (int i = 0; i < filelines.Length; i++)

    {

        arr[i] = filelines[i].Split(',');       // Note: no need for .ToArray()

    }

    // now convert

    string[,] arr2 = new string[arr.Length, arr.Max(x => x.Length)];

    for(var i = 0; i < arr.Length; i++)

    {

        for(var j = 0; j < arr[j].Length; j++)

        {

            arr2[i, j] = arr[i][j];

        }

    }

     

    Thanks

      Modified On Aug-11-2016 05:17:07 AM

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!