How to convert jagged array to 2D array?

Total Post:149

Points:1043

2412  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[];
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. 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 Apr-04-2018 12:06:11 AM