2012-12-14 160 views
2

我的目標是讀取包含座標數(第一行中提到的)和X Y值(double)的txt文件。例如:從txt讀取座標到數組(c#)

4.454 3.24

1.23 4

我需要把這些座標轉換成陣列(沒有第一線) 到目前爲止我成功讀取文字,但不要如何放入數組中。 我的數組是一個點(雙x,雙y)C'tor,但我想學習如何放入正常數組。 另一個問題是我怎樣才能控制我要讀哪一行?

是到目前爲止的代碼

 using (StreamReader sr = File.OpenText(fileName)) 
     { 
      int i = 0; 
      string inputLine; 
      int len = int.Parse(inputLine = sr.ReadLine()); 
      string[] readText = File.ReadAllLines(fileName); 
      foreach (string line in File.ReadAllLines(fileName)) 
      { 
       string[] parts = line.Split(' '); 
       foreach (string part in parts) 
       { 
        Console.WriteLine("{0}:{1}",i, part);  
       } 
       i++; 
      } 
     } 

謝謝大家! 我的第一個問題,希望不違反論壇的規則。

+0

你可以給你的文字 的多線也可以暗示你應該是什麼結果 –

+0

實在不應該在文件打開'StreamReader',然後使用'File.ReadAllLines'。你應該使用一個或另一個。 – juharr

回答

0
var coordinates = File.ReadLines(fileName).Skip(1) 
        .Select(line => line.Split()) 
        .Select(x=>new PointF(float.Parse(x[0]),float.Parse(x[1]))) 
        .ToList(); 
+0

L.B&@DaveBish我是一名初學者,在該任務中不允許使用「.Select」的語法。是否有其他選擇只使用ReadLine,StreamReader,Split,Spare(string to double),Point array/foreach? –

+0

@DimaB當然這是可能的,但我不想讓你的任務。在互聯網上有很多關於這些方法的文檔。 –

2

是這樣的嗎?

var points = File.ReadLines("c:\filepath") 
    .Skip(1) //Ignore the 1st line 
    .Select(line => line.Split(' ')) //Chop the string into x & y 
    .Select(split => new Point(double.Parse(split[0]), double.Parse(split[1])); //create a point from the array