2012-01-03 76 views
0

我有一個文本文件,其中每行用\n分隔,行中的每個值用\t分隔。C#textfile解析錯誤

StreamReader sr = new StreamReader(dlg.FileName); 
String ganzes = sr.ReadToEnd(); 
String[] allezeilen = ganzes.Split('\n'); 
string[] ssa = allezeilen[i].Split('\t'); 
foreach (string h in ssa) 
{ 
    String verwendungszw = h.Contains("Verwendungszweck"); 
} 

現在,在foreach循環中,我嘗試在ssa中找到包含"Verwendungszweck"的條目。好的,那很簡單。但是我不需要輸入"Verwendungszweck",我需要下一個。

如何獲取下一個條目?

回答

1

更改環路

for (int i = 0; i < ssa.Length; i++) { 
    if (ssa[i].Contains("Verwendungszweck")) { 
     String verwendungszw = ssa[i+1]; 
    } 
} 
+0

哇,什麼是恥辱我。謝謝,我會在幾分鐘內將您的帖子標記爲解決方案。 – user896692 2012-01-03 16:45:49

+0

如果您想避免在最後一個條目包含「Verwendungszweck」時引發異常,請使用'我 Brian 2012-01-04 14:36:29

5

一種選擇是使用LINQ:

string value = ssa.SkipWhile(x => !x.Contains("Verwendungszweck")) 
        .ElementAtOrDefault(1); 

這可能這樣做,如果這是所有你需要最簡單的方法。如果沒有ssa的元素包含Verwendungszweck,或者只有最後一個元素完成,則value將爲空。

1

回答沒有邊界檢查和驗證,該搜索字符串數組中:

int pos = Array.IndexOf(ssa, "Verwendungszweck"); 
string value = ssa[pos + 1]; 
0

請注意,你不界定什麼是「我」

StreamReader sr = new StreamReader(dlg.FileName); 
String ganzes = sr.ReadToEnd(); 
String[] allezeilen = ganzes.Split('\n'); 
foreach (string CurrentLine in allezeilen) 
    { 
    string[] ssa = CurrentLine.Split('\t'); 
    for (CurrentRowIndex=0, CurrentRowIndex<ssa.Count, CurrentRowIndex++) 
     { 
      if ssa[CurrentRowIndex].Contains("Verwendungszweck") 
        verwendungszw =ssa[++CurrentRowIndex] ; // or add it to a list and maybe exit for 
     } 
    }