c# .txt文件:如果前一行包含"X",则在下一行读取子字符串
本文关键字:一行 quot 字符串 读取 包含 文件 txt 如果 | 更新日期: 2023-09-27 18:02:07
我希望从文本文件中读取,如果一行包含"XYZ",我需要在该行内返回子字符串,然后在下一行读取另一个子字符串。
将有几行将返回"XYZ",并且在每一行上,我都需要来自下一行的子字符串(每一行都将是不同的值)。目前,我可以返回具有"XYZ"行的子字符串的所有实例,但然后要么保持从第一个"XYZ"下面的行返回相同的子字符串(每次都应该是唯一的),要么就像下面一样,每个字符单独。
所以在下面的代码片段中,来自日志。如果一行包含XYZ,那么我需要移动到下一行并拉出日期/时间/和批名称编号。XYZ将在日志中重复几次,每次都有不同的结果。
2015-07-02 11:03:13 838 [1] INFO Place (null) (null) (null) - btnAction_Click, Completed Scan for _HAH_Claim_T, XYZ
2015-07-02 11:03:14,432 [1]信息的地方(null)(空)(空)——btnAction_Click设置批名 1234567
string[] lines = File.ReadAllLines(@"Text Document.txt");
foreach (string line in lines)
{
int success = line.IndexOf("XYZ");
if (success > 0)
{
string pass = "Pass";
string date = line.Substring(0, 10);
string time = line.Substring(11, 12);
int ID = line.LastIndexOf("XYZ");
if (ID != 0)
{
Console.WriteLine("'n't" + pass + " Date: {0}'tTime: {1}", date, time);
}
string currentLine;
string batchID;
for (int i = 0; i < lines.Length; i++)
{
currentLine = lines.Skip(6).First();
batchID = currentLine.Substring(100);
Console.WriteLine("'tBatchID{0}", batchID[i]);
}
Console.WriteLine();
}
}
Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
我不完全理解这个问题,因为对于你想从每行中提取什么,它有点抽象,但像这样的东西希望能让你走上正确的轨道
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
using (var reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (line.Contains("XYZ") && !reader.EndOfStream)
{
var nextLine = reader.ReadLine();
var pass = "Pass";
var date = nextLine.Substring(0, 10);
var time = nextLine.Substring(11, 12);
Console.WriteLine("'n't" + pass + " Date: {0}'tTime: {1}", date, time);
}
}
}
line变量是包含XYZ的变量,下一行是其后的行。如果不符合您的要求,请将问题更新得更具体一些
我会说这样的话吗?
string[] lines = File.ReadAllLines(@"Text Document.txt");
for(int i = 0; i < lines.Length(); i++){
if(lines[i].Contains("XYZ")){
string pass = "Pass";
string date = line.Substring(0, 10);
string time = line.Substring(11, 12);
Console.WriteLine("'n't" + pass + " Date: {0}'tTime: {1}", date, time);
// Retrieve the value in the next line
string nextLineAfterXYZ = lines[i + 1];
batchID = nextLineAfterXYZ.Substring(100);
Console.WriteLine("'tBatchID{0}", batchID);
}
}
你应该添加一些错误处理,如果它是最后一行(IndexOutOfBound)等
string[] lines = File.ReadAllLines(@"E:Sum.txt");
string str = string.Empty;
foreach (string line in lines)
{
if (line.Contains("x"))
{
str += line;
Console.WriteLine();
continue;
}
break;
}
Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();