2013-03-04 68 views
-3

提取數據我有開始這樣一個文本文件:從文本文件

[Details] 
Version=100 
Switch=340 
Video=800 
Date=20100912 
Length=00:49:34.2 
Days=1 
hours=20 

有沒有辦法,我可以檢查[Details]部分中的每一行,然後做這樣的事情的方法嗎?

if(line == "version") 
{ 
    // read the int 100 
} 

此外,文本文件中還有其他文字對我沒有興趣。我只需要找到[Details]部分。

+1

搜索谷歌1線C#文件讀取循環 – 2013-03-04 23:57:36

+1

如果該文件是由您的應用程序創建的 - 請考慮在配置文件中使用XML。他們在開始時處理起來要困難得多,但後來他們可以節省大量時間。 – Kamil 2013-03-04 23:57:41

+0

感謝您的輸入 – user2125084 2013-03-05 00:04:05

回答

1
 using (StreamReader sr = new StreamReader(path)) 
     { 
      while (sr.Peek() >= 0) 
      { 
       var keyPair = sr.ReadLine(); 
       var key = keyPair.Split('=')[0]; 
       var value = keyPair.Split('=')[1]; 
      } 
     } 
+1

您正在閱讀兩行代碼.. – Blorgbeard 2013-03-05 00:00:05

+0

這很好,有時代碼與它所能實現的代碼相比很少,謝謝 – user2125084 2013-03-05 00:03:07

+0

我會在6分鐘內接受您的答案,因爲它不會讓我只是:) – user2125084 2013-03-05 00:03:41

0

您可以使用File.ReadAllLines找到與Version線,然後從那裏解析int

foreach (var line in File.ReadAllLines("file").Where(line => line.StartsWith("Version"))) 
{ 
    int value = 0; 
    if (int.TryParse(line.Replace("Version=","").Trim(), out value)) 
    { 
     // do somthing with value 
    } 
} 

或者如果該文件只包含版本

string version = File.ReadAllLines("file").FirstOrDefault(line => line.StartsWith("Version=")); 

int value = 0; 
if (int.TryParse(version.Replace("Version=", "").Trim(), out value)) 
{ 
    // do somthing with value 
}