2011-05-20 11 views

Respuesta

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

si tiene sólo números y necesita una lista de int como resultado, puede hacer esto:

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

Me ganaste a ella, así que voy a publicar mi sugerencia aquí: Archivo .ReadAllLines ("fileName") .Seleccione (l => l.Split ('')) .ToArray(); –

6

Depende del tipo de matriz que desee. Si desea acople todo en una matriz unidimensional, ir con la respuesta de Alex Aza, de lo contrario, si desea una matriz de 2 dimensiones que se asigna a las líneas y elementos dentro del archivo de texto:

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(); 

Tenga en cuenta que no hay manejo de errores, por lo que si falla el análisis, el código anterior emitirá una excepción.

0

No pude obtener la respuesta Quick Joe Smith para trabajar, así que la modifiqué. Pongo el código modificado en un método estático dentro de una clase "FileReader":

public static double[][] readWhitespaceDelimitedDoubles(string[] input) 
{ 
    double[][] array = input.Where(line => !String.IsNullOrWhiteSpace(line)) // Use this to filter blank lines. 
     .Select(line => line.Split((string[])null, StringSplitOptions.RemoveEmptyEntries)) 
     .Select(line => line.Select(element => double.Parse(element))) 
     .Select(line => line.ToArray()) 
     .ToArray(); 

     return array; 
} 

Para mi solicitud, yo estaba de análisis para el doble en comparación con int. Para llamar a un código, trate de usar algo como esto:

string[] fileContents = System.IO.File.ReadAllLines(openFileDialog1.FileName); 
double[][] fileContentsArray = FileReader.readWhitespaceDelimitedDoubles(fileContents); 

Console.WriteLine("Number of Rows:  {0,3}", fileContentsArray.Length); 
Console.WriteLine("Number of Cols:  {0,3}", fileContentsArray[0].Length); 
Cuestiones relacionadas