C# 文本文件解析错误

发布于 2024-12-24 18:30:18 字数 511 浏览 0 评论 0原文

我有一个文本文件,其中每一行都用 \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" 的条目,我需要下一个。

我怎样才能获得下一个条目?

I´ve got a textfile, where every line is separated with \n an every value in a row is separated by \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");
}

Now, in the foreach loop, I try to find the entry in ssa that contains "Verwendungszweck". Ok, that is easy. But I don´t need the entry with "Verwendungszweck" in it, I need the next one.

How can I get the next entry?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

时光清浅 2024-12-31 18:30:18

一种选择是使用 LINQ:

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

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

One option would be to use LINQ:

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

That's probably the simplest way to do it if that's all you need. value will be null if no elements of ssa contained Verwendungszweck, or if only the last element did.

ι不睡觉的鱼゛ 2024-12-31 18:30:18

将循环更改为

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

Change loop to

for (int i = 0; i < ssa.Length; i++) { 
    if (ssa[i].Contains("Verwendungszweck")) {
        String verwendungszw = ssa[i+1];
    }
}
烟雨扶苏 2024-12-31 18:30:18

无需进行边界检查和验证搜索字符串是否在数组中即可回答:

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

Answer without bounds checking and verification that the search string is in the array:

int pos = Array.IndexOf(ssa, "Verwendungszweck");
string value = ssa[pos + 1];
浮华 2024-12-31 18:30:18

请注意,您没有定义“i”是什么

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

Note that you don't define what is 'i'

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 
         }
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文