在C#中读取文本文件中的下一行

时间:2016-06-08 17:02:03

标签: c#

我需要从文本文件中获取下一行数据。 例如,文本文件abc包含:

测试结果:失败
错误代码:2000-0333

我需要搜索关键字“测试结果:失败”,如果存在,则应将数据“2000-0333”存储在变量中。

这是我到目前为止所做的:

   List<string> filecontents = File.ReadAllLines("abc.txt").ToList<string();
   for (int i = 0; i < filecontents.Count; i++)
   {
       if (filecontents[i].Contains("Test Results : Fail"))
       {                          
           //need to get the data here
       }
   }

我能解决这个问题吗? 提前谢谢。

3 个答案:

答案 0 :(得分:4)

您的下一行将在filecontents [i + 1]

List<string> filecontents = File.ReadAllLines("abc.txt").ToList<string();
for (int i = 0; i < filecontents.Count; i++)
   {
       if (filecontents[i].Contains("Test Results : Fail"))
       {                          
           string error = filecontents[i + 1];
       }
   }

注意,如果文件的最后一个字符串是“Test Results:Fail”,当试图获取filecontents [i + 1]时会抛出异常。

要获得2000-0333,您应该将字符串错误拆分为“:”

string errorNumber = filecontents[i + 1].Split(':')[1]

但是,如果没有':',它将抛出异常。请注意这一点。

你可以.Trim()使用errorNumber来确定字符串中没有空格。

答案 1 :(得分:1)

List<string> filecontents = File.ReadAllLines("abc.txt").ToList<string();
for (int i = 0; i < filecontents.Count; i++)
{
    if (filecontents[i].Contains("Test Results : Fail"))
    {                          
       string s = fileContents[i+1].Split(" : ")[1];
    }
}

答案 2 :(得分:0)

if(  (from c in filecontents where c.Contains("Test Results : Fail") select filecontents.IndexOf(c)).Any())
{
    int index = (from c in filecontents where c.Contains("Test Results : Fail") select filecontents.IndexOf(c)).SingleOrDefault();
     string error = filecontents[index + 1];
}