【问题标题】:Reading coordinates from txt into array (c#)将坐标从txt读取到数组中(c#)
【发布时间】:2012-12-14 14:06:38
【问题描述】:

我的目标是读取包含坐标数(在第一行中提到)和 X Y 值(双精度值)的 txt 文件。例如:

2

4.454 3.24

1.23 4

我需要将这些坐标放入数组中(没有第一行) 到目前为止,我成功阅读了文本,但不知道如何放入数组。 我的数组是一个 Point (double x,double 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++;
            }
        }

谢谢大家! ps我的第一个问题,希望不要违反论坛的规则。

【问题讨论】:

  • 你能给出多行文本吗?你能提示一下结果应该是什么
  • 真的不应该在文件上打开StreamReader,然后使用File.ReadAllLines。您应该使用其中一种。

标签: c# arrays coordinates readline


【解决方案1】:

这样的?

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

【讨论】:

    【解决方案2】:
    var coordinates = File.ReadLines(fileName).Skip(1)
                        .Select(line => line.Split())
                        .Select(x=>new PointF(float.Parse(x[0]),float.Parse(x[1])))
                        .ToList();
    

    【讨论】:

    • L.B & @DaveBish 我是初学者,在该作业中不允许使用“.Select”的语法。仅使用 ReadLine,StreamReader,Split,Spare(string to double), Point array/foreach 是否还有其他选择?
    • @DimaB 当然可以,但我不想让你分配。互联网上有很多关于这些方法的文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多