列出项目
我有一个数据文件,如:
作业名称管理构建作业客户MODA作业否E830-2-01-S-01工程师名称MA CHECKER NAME MHI END JOB信息输入宽度79单位MET KN KN JOINT COORDINATES 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 3 2 0; 21 7 2 0; 22 11 2 0; 23 15.1 2 0; 24 19 2 0; 25 23.1 2 0; 26 27.2 2 0; 27 30.15 2 0; 28 42.13 2 0; 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 2 4; 51 15.1 2 4; 52 19 2 4; 53 23.1 2 4; 54 27.2 2 4; 55 30.15 2 4; 56 34 2 4; 57 42.13 0 5.32; 58 42.13 2 5.32; 59 0 0 6; 61 3 0 6; 62 7 0 6; 63 11 0 6; 64 15.1 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);
答案 0 :(得分:1)
通过指定字符串然后取第一个数组,用“;”分隔它,我看起来是一个简单的拆分。
var inputArr = inputString.Split(new[] { "JOINT COORDINATES" },
StringSplitOptions.RemoveEmptyEntries);
var coordinates = inputArr[1].Split(';');
我希望我不会错过任何一点。
答案 1 :(得分:1)
一个问题是在找到与“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);