2012-05-18 158 views
-1

我有以下內容的文本文件:解析文本文件不

Warning 18.05.2012 16:27:45 www.site.com 0 None BusyCount: 00:00:00.0000880 
Warning 18.05.2012 16:27:45 www.site.com 0 None GetBusyPlace: 00:00:00.7759916 
Warning 18.05.2012 16:27:44 www.site.com 0 None GetHallPlan: 00:00:00.0098537 
Warning 18.05.2012 16:27:44 www.site.com 0 None GetSeatPrice: 00:00:00.1462649 
Warning 18.05.2012 16:27:40 www.site.com 0 None BusyCount: 00:00:00.0000988 
Warning 18.05.2012 16:27:40 www.site.com 0 None GetBusyPlace: 00:00:00.7330764 
Warning 18.05.2012 16:27:39 www.site.com 0 None GetHallPlan: 00:00:00.0435432 

我有三個數組:

List<string> getSeatPrice = new List<string>(); 
List<string> getBusyCounts = new List<string>(); 
List<string> getHallPlan = new List<string>(); 

我如何解析這個文本文件,並從中獲取時間字符串,例如GetBusyPlace: 00:00:00.7759916並放在適當的數組?

謝謝

+0

你試過了什麼?什麼是列分隔符? –

回答

2

看起來您的文件中的每一行都是以空格分隔的一組令牌。在這種情況下最簡單的做法是使用String.Split(),並根據它在字符串中的位置獲取所需的令牌。

var getSeatPrice = new List<string>(); 
var getBusyCounts = new List<string>(); 
var getHallPlan = new List<string>(); 
foreach (var line in File.ReadAllLines("c:\\data\\myfile.txt")) { 
    var tokens = line.Split('\t', ' '); 
    var kind = tokens[6]; 
    var value = tokens[7]; 
    switch (kind) { 
     case "GetSeatPrice:": 
      getSeatPrice.Add(value); 
     break; 
     case "BusyCount:": 
      getBusyCounts.Add(value); 
     break; 
     case "getHallPlan:": 
      getHallPlan.Add(value); 
     break; 
    } 
} 
1

看起來像一個固定寬度的字段格式。

我建議使用位於Microsoft.VisualBasic.FileIO命名空間的TextFieldParser類(只需添加對Microsoft.VisualBasic.dll的引用即可)。

它是一個.NET庫,您可以設置指定字段寬度和類型以獲取強類型的字段視圖。

+0

+1我不知道那堂課!謝謝。 –