2016-02-29 25 views
0

我正在尝试开发一个读取HRM文件的程序。文本文件看起来是这样的:在文本文件中的第4列中提取时间和值

[IntTimes] 
00:09:59.0 117 91 127 153 
0 0 0 124 41 309 
0 0 0 0 0 
0 2181 68 0 0 0 
0 0 0 0 0 0 
00:10:00.0 115 91 127 153 
0 0 0 119 0 309 
0 0 0 0 0 
33554432 2184 0 0 0 0 
500 0 0 0 0 0 
00:20:10.0 173 109 161 177 
0 0 0 112 62 307 
0 0 0 0 0 
0 3461 22 0 0 0 
0 0 0 0 0 0 
00:25:02.0 119 111 126 172 
0 0 0 190 54 308 
0 0 0 0 0 
0 764 133 0 0 0 
0 0 0 0 0 0 
00:35:16.0 174 119 167 179 
0 0 0 121 52 309 
0 0 0 0 0 
0 3500 70 0 0 0 
0 0 0 0 0 0 
00:50:00.0 134 109 153 179  
0 0 0 178 0 310 
0 0 0 0 0 
33554432 10840 0 0 0 0 
500 0 0 0 0 0 
01:00:00.0 150 112 139 175 
0 0 0 66 0 312 
0 0 0 0 0 
33554432 1741 0 0 0 0 
500 0 0 0 0 0 
01:06:18.9 108 105 139 177 
0 0 0 64 123 313 
0 0 0 0 0 
0 5668 0 80 0 0 
0 0 0 0 0 0 

我想收集所有的时间并将其存储在一个列表或数组,我将使用该绘制到ZedGraph。我也需要每次收集第4位数字。

例如[IntTimes]下面的第一行我想收集'00:09:59.0',存储它,然后收集127并存储它。与00:10:00.0等相同,直到没有剩下的时间。

我已经开发出了代码查找下面的方括号内的值的一部分,使用的@"\[(.*?)\]"一个正则表达式:

if (squareBrackets.Match(line).Success) 
     { 
      titles.Add(line); 
      if (textAfterTitles.Match(line).Success) 
      { 
       textaftertitles.Add(line); 

      } 
     } 

听起来有点长篇大论,但我真的不知道是什么为了实现这个目标,所以认为这是最好的地方。

由于

+0

您将必须读取每一行,将其拆分为一个字符串数组,然后从数组中提取第0个索引和第3个索引。 –

回答

1

你将不得不读取每个行,它分割成一个字符串数组,然后提取从阵列的第0索引和第三索引。

NameValueCollection kv = new NameValueCollection();// Choose your data structure. name value collection allows duplicates. 
using (StreamReader oReader = new StreamReader("your_file_path")) 
{ 
     while ((sLine = oReader.ReadLine()) != null) 
     { 
      if(!sLine.Contains("[IntTimes]") && !sLine.Contains("[IntNotes]")) 
      { 
       string[] sLineItems = sLine.Split('\t');// Assuming the file is tab delimited. 
       kv.Add(sLineItems[0],sLineItems[3]); 
       Console.WriteLine(sLineItems[0],sLineItems[3]); 
      } 
     } 
} 
foreach(string key in kv.AllKeys) 
     Console.WriteLine(key,kv[key]); 
+0

Thankyou - 我怎么能编码到它只读[IntTimes]后面的行,因为我没有显示整个文本文件,这是一个片段。同样在该部分的末尾是[IntNotes],所以我需要在这两者之间。我怎么能这样做? Thankyou –

+0

添加检查以忽略包含[IntTimes]和[IntNotes]的行。我已编辑代码以包含对这两行字符串的检查。 –

0

如何使用CSV工具解析文件?我自己使用各种文本文件的CSV Helper,它可以处理很多不同的格式。您可以设置很多配置来根据需要调整解析。

它也可作为NuGet package