C#文本文件解析错误

时间:2012-01-03 16:40:42

标签: c# contains streamreader

我有一个文本文件,其中每一行都以\n分隔,一行中的每个值都以\t分隔。

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"中的条目,我需要下一个条目。

如何获得下一个条目?

4 个答案:

答案 0 :(得分:5)

一种选择是使用LINQ:

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

如果您需要所有,这可能是最简单的方法。如果value的元素中没有ssa,或者只有最后一个元素,则Verwendungszweck将为null。

答案 1 :(得分:1)

将循环更改为

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

答案 2 :(得分:1)

无边界检查和验证搜索字符串在数组中的答案:

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

答案 3 :(得分:0)

请注意,您没有定义什么是&#39; i&#39;

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 
         }
  }