2016-02-29 23 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

相關問題