是否有一种方法可以从文件中读取特定的数据行并将数字分成单个列表

本文关键字:数据 单个 列表 数字 读取 一种 方法 文件 是否 | 更新日期: 2023-09-27 18:17:29

列表项

我有一个数据文件,如:

职位名称行政大楼职位客户MODA职位编号e830 - 2-01-01 - s -01工程师姓名MA检查人员姓名MHI终端职位信息输入宽度79单位米KN关节坐标1 32.15 0-2;2 34.81 0 -2;3 37.47 0 -2;4 40.13 0 -2;5 32.15 2 -2;6 34.81 2 -2;7 37.47 2 -2;8 40.13 2 -2;9 0 0 0;10 3 0 0;11 7 0 0;12 11 0 0;13 15.1 0 0;14 19 0 0;15 23.1 0 0;16 27.2 0 0;17 30.15 0 0;18 42.13 0 0;19 0 2 0;20 32 20;21 7 20;22 11 20;23 15.1 20 0;24 19 20;25 23.1 20;26 27.22 20;27 30.15 20;28 42.13 20;31 15.1 2 0.95;32 19 2 0.95;33 42.13 0 2.66;34 42.13 2 2.66;35 0 0 4;37 3 0 4;38 7 0 4;39 11 0 4;40 15.1 0 4;41 19 0 4;42 23.1 0 4;43 27.2 0 4;44 30.15 0 4;45 34 0 4;46 0 2 4;47 1.05 2 4;48 3 2 4;49 7 2 4;50 11 24 4;51 15.1 24;52 19 24;53 23.1 2 4;54 27.2 24;55 30.15 24;56 34 24;57 42.13 0 5.32;58 42.13 2 5.32;59 0 0 6;61 3 0 6;62 70 0 6;63 11 0 6;

在这里,我想取字符串"JOINT COORDINATES"之后的值,并将每个分号分隔的数字集存储到四个列表中,如:1 32.15 0 -2;2 34.81 0 -2等,并将数字分割并存储在不同的列表中。

我能够读取到"JOINT COORDINATES",现在不能从下一行读取并拆分和存储数字。请帮助。

var nodeInfo_List = new List<string[]>();
var nodeID_List = new List<double[]>();
var nodeX_List = new List<double[]>();
var nodeY_List = new List<double[]>();
var nodeZ_List = new List<double[]>();
StreamReader myfile = new StreamReader(@"D:'Documents'PIP_Task'PB_devTask'PB_devTask'ADMIN PHASE 2-a3.std");
//string[] lines = System.IO.File.ReadAllLines(@"D:'Documents'PIP_Task'PB_devTask'PB_devTask'ADMIN PHASE 2-a3.std");
string[] lines;
do
{
    lines = System.IO.File.ReadAllLines(@"D:'Documents'PIP_Task'PB_devTask'PB_devTask'ADMIN PHASE 2-a3.std");
    if (lines != null)
    {
        //iterate through lines
        foreach (var name in lines)
        {
            if(name.Equals("JOINT COORDINATES"))
            {
                var nums = myfile.ReadLine();
                if (!String.IsNullOrWhiteSpace(nums))
                {
                    nodeInfo_List.Add(nums.Split(';'));
                    foreach (var node in nodeInfo_List)
                    {
                        Console.WriteLine("{0}: ", node);
                    }
                }
            }
        }
    }
} while (lines != null);

是否有一种方法可以从文件中读取特定的数据行并将数字分成单个列表

在我看来,这是一个简单的分割,指定你的字符串,然后采取第一个数组,分割";"。

var inputArr = inputString.Split(new[] { "JOINT COORDINATES" },  
 StringSplitOptions.RemoveEmptyEntries);
var coordinates = inputArr[1].Split(';');
我希望我没有漏掉任何一点。

一个问题是在您找到与"JOINT COORDINATES"字符串匹配的行之后您尝试从文件中读取行,而我的myfile的指针在第一行。试试下面的方法

var nodeInfo_List = new List<string[]>();
        var nodeID_List = new List<double[]>();
        var nodeX_List = new List<double[]>();
        var nodeY_List = new List<double[]>();
        var nodeZ_List = new List<double[]>();
        StreamReader myfile = new StreamReader(@"D:'Documents'PIP_Task'PB_devTask'PB_devTask'ADMIN PHASE 2-a3.std");

  string line;
        do
        {
            line = myfile.ReadLine();
        } while (!line.Equals("JOINT COORDINATES"));
            do
            {
                var nums = myfile.ReadLine();
                if (!String.IsNullOrWhiteSpace(nums))
                {
                    nodeInfo_List.Add(nums.Split(';'));
                    foreach (var node in nodeInfo_List)
                    {
                        Console.WriteLine("{0}: ", node);
                    }
                }
            } while (!myfile.EndOfStream);