2011-05-20 100 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);