我需要从文本文件中获取下一行数据。 例如,文本文件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
}
}
我能解决这个问题吗? 提前谢谢。
答案 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];
}