2011-05-20 62 views

回答

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

如果你只有数字和需要的清单int因此,您可以这样做:

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

你打我吧,所以我会在这里发布我的建议:文件.ReadAllLines(“fileName”).Select(l => l.Split('')).ToArray(); – 2011-05-20 00:06:29

6

这取决于你想要的数组种类。如果你想拉平一切都变成一维数组,一起去亚历克斯氮杂的答案,否则,如果你想有一个映射到文本文件中的线条和元素的2维数组:

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

注意没有错误处理,所以如果解析失败,上面的代码会抛出异常。

0

我不能让Quick Joe Smith的回答工作,所以我修改了它。我把修改后的代码放到一个静态方法“的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; 
} 

对于我的申请,我被解析为双,而不是为int。要调用代码,请尝试使用这样的:

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