2011-09-25 59 views
1

它是如何將有可能搜索字符串如#Test1在一個文本文件中,然後輸出它下面的一行作爲一個字符串,例如搜索在C#和輸出線作爲字符串的關鍵詞

Test.txt的

#Test1 
86/100 

#Test2 
99/100 

#Test3 
13/100 

所以如果Test2的#是搜索關鍵字「二百分之九十九」就會變成一個字符串

+0

你嘗試過什麼?你有加載/處理文件或用*邏輯*這個問題嗎?這兩個問題是相當瑣碎(File.OpenText /的ReadLine和一個簡單的標誌要記住,如果最後一行開始與「#Text」將做的工作) – Carsten

+0

重新標記功課 – Dani

回答

3

解析文件一次,存儲在字典中的結果。然後在字典中查找。

var dictionary = new Dictionary<string, string>(); 
var lines = File.ReadLines("testScores.txt"); 
var e = lines.GetEnumerator(); 
while(e.MoveNext()) { 
    if(e.Current.StartsWith("#Test")) { 
     string test = e.Current; 
     if(e.MoveNext()) { 
      dictionary.Add(test, e.Current); 
     } 
     else { 
      throw new Exception("File not in expected format."); 
     } 
    } 
} 

現在,你就可以說

Console.WriteLine(dictionary["#Test1"]); 

此外,長期的,我建議移動到一個數據庫中。

2

使用輸入行和搜索字符串(例如:#測試1)然後使用下一行作爲輸入。

+1

你應該給他一些代碼,我覺得 – Carsten

+0

我同意 - 你打擊我的鑰匙+1 – Leons

0

如果正上方是文件格式。那麼你可以用這個

1. read all lines till eof in an array. 
2. now run a loop and check if the string[] is not empty. 
    Hold the value in some other array or list. 
    now you have items one after one. so whenever you use loop and use [i][i+1], 
    it will give you the test number and score. 

希望這可能會有所幫助。

-2

這應該爲你做它:

 int lineCounter = 0; 
     StreamReader strReader = new StreamReader(path); 

     while (!strReader.EndOfStream) 
     { 
      string fileLine = strReader.ReadLine(); 
      if (Regex.IsMatch(fileLine,pattern)) 
      { 
       Console.WriteLine(pattern + "found in line " +lineCounter.ToString()); 
      } 
      lineCounter++; 
     }