C# - How to parse text file (space delimited numbers)?

12,650

Solution 1

var fileContent = File.ReadAllText(fileName);
var array = fileContent.Split((string[])null, StringSplitOptions.RemoveEmptyEntries);

if you have numbers only and need a list of int as a result, you can do this:

var numbers = array.Select(arg => int.Parse(arg)).ToList();

Solution 2

It depends on the kind of array you want. If you want to flatten everything into a single-dimensional array, go with Alex Aza's answer, otherwise, if you want a 2-dimensional array that maps to the lines and elements within the text file:

var array = File.ReadAllLines(filename)
                .Select(line => line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
                .Where(line => !string.IsNullOrWhiteSpace(line)) // Use this to filter blank lines.
                .Select(int.Parse) // Assuming you want an int array.
                .ToArray();

Be aware that there is no error handling, so if parsing fails, the above code will throw an exception.

Solution 3

You will be interested in StreamReader.ReadLine() and String.Split()

Share:
12,650
q0987
Author by

q0987

Updated on June 14, 2022

Comments

  • q0987
    q0987 almost 2 years

    Given a data file delimited by space,

    10 10 10 10 222 331 
    2 3 3 4 45
    4 2 2 4
    

    How to read this file and load into an Array

    Thank you

  • Morten Mertner
    Morten Mertner almost 13 years
    You beat me to it, so I'll post my suggestion here: File.ReadAllLines( "fileName" ).Select( l => l.Split( ' ' ) ).ToArray();