Dado un archivo de datos delimitado por el espacio,C# - ¿Cómo analizar el archivo de texto (espacios delimitados por números)?
10 10 10 10 222 331
2 3 3 4 45
4 2 2 4
Cómo leer este archivo y cargar en una matriz
Gracias
Dado un archivo de datos delimitado por el espacio,C# - ¿Cómo analizar el archivo de texto (espacios delimitados por números)?
10 10 10 10 222 331
2 3 3 4 45
4 2 2 4
Cómo leer este archivo y cargar en una matriz
Gracias
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();
Me ganaste a ella, así que voy a publicar mi sugerencia aquí: Archivo .ReadAllLines ("fileName") .Seleccione (l => l.Split ('')) .ToArray(); –
Usted será i nterested en StreamReader.ReadLine()
y String.Split()
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.
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);
lo general don mi monóculo y marfil caña cuando leo en los archivos delimitados: P –