我是 C# 的新手。我正在尝试编写一个读取文本文件并根据条件打印特定行的 winforms 应用程序。例如,我有一个如下所示的文本文件:
07/10 08:15:00 EVENT: IN
07/10 08:15:00 BUILDING: A
07/10 08:15:00 ROOM: 101
07/10 08:15:00 MEMBER: JOHN, MARIA, PETER, SOPHIA
07/10 08:15:00 --------------------------------------
07/11 17:15:00 EVENT: OUT
07/11 17:15:00 BUILDING: B
07/11 17:15:00 ROOM: 102
07/11 17:15:00 MEMBER: ANDY, HAN, CINDY, LESTER
07/11 17:15:00 --------------------------------------
07/12 09:30:00 EVENT: IN
07/12 09:30:00 BUILDING: A
07/12 09:30:00 ROOM: 101
07/12 09:30:00 MEMBER: JIMMY, NICKY, EMILY, DANIEL
07/12 09:30:00 --------------------------------------
07/13 08:46:00 EVENT: IN
07/13 08:46:00 BUILDING: B
07/13 08:46:00 ROOM: 202
07/13 08:46:00 MEMBER: ROMEO, JULIET, WILLIAM
07/13 08:46:00 --------------------------------------
07/13 15:29:00 EVENT: IN
07/13 15:29:00 BUILDING: A
07/13 15:29:00 ROOM: 101
07/13 15:29:00 MEMBER: THOMAS, VIVIAN, KIM, SAMUEL
07/13 15:29:00 --------------------------------------
07/14 20:33:00 EVENT: OUT
07/14 20:33:00 BUILDING: A
07/14 20:33:00 ROOM: 301
07/14 20:33:00 MEMBER: JIMMY, NICKY, DANIEL
07/14 20:33:00 --------------------------------------
我想打印事件名称,当它匹配以下所有 3 个条件时,所有其他行都属于该事件:
- 条件1:事件:IN
- 条件2:建筑:A
- 条件3:房间:101
结果应该是这样的:
07/10 08:15:00 EVENT: IN
07/10 08:15:00 BUILDING: A
07/10 08:15:00 ROOM: 101
07/10 08:15:00 MEMBER: JOHN, MARIA, PETER, SOPHIA
07/10 08:15:00 --------------------------------------
07/12 09:30:00 EVENT: IN
07/12 09:30:00 BUILDING: A
07/12 09:30:00 ROOM: 101
07/12 09:30:00 MEMBER: JIMMY, NICKY, EMILY, DANIEL
07/12 09:30:00 --------------------------------------
07/15 10:11:00 EVENT: IN
07/15 10:11:00 BUILDING: A
07/15 10:11:00 ROOM: 101
07/15 10:11:00 MEMBER: THOMAS, VIVIAN, KIM, SAMUEL
07/15 10:11:00 --------------------------------------
这是我的代码:
private void btnSearch_Click(object sender, EventArgs e)
{
txtResult.Clear();
int counter = 0;
string line;
if (txtPath.Text != "")
{
StreamReader reader = new StreamReader(txtPath.Text);
while ((line = reader.ReadLine()) != null)
{
if (line.Contains("EVENT: IN"))
{
//problem at this line
txtResult.Text += line + "\r\n";
if ((line = reader.ReadLine()) != null)
{
if (line.Contains("BUILDING: A"))
{
txtResult.Text += line + "\r\n";
if ((line = reader.ReadLine()) != null)
{
if (line.Contains("ROOM: 101"))
{
txtResult.Text += line + "\r\n";
if ((line = reader.ReadLine()) != null)
txtResult.Text += line + "\r\n";
if ((line = reader.ReadLine()) != null)
txtResult.Text += line + "\r\n";
}
}
}
}
}
counter++;
}
reader.Close();
}
else
MessageBox.Show("Find not found!", "Message", MessageBoxButtons.OK);
}
问题是当它达到第一个条件时,它会打印所有包含单词'EVENT: IN' 的行,如下所示:
07/10 08:15:00 EVENT: IN
07/10 08:15:00 BUILDING: A
07/10 08:15:00 ROOM: 101
07/10 08:15:00 MEMBER: JOHN, MARIA, PETER, SOPHIA
07/10 08:15:00 --------------------------------------
07/12 09:30:00 EVENT: IN
07/12 09:30:00 BUILDING: A
07/12 09:30:00 ROOM: 101
07/12 09:30:00 MEMBER: JIMMY, NICKY, EMILY, DANIEL
07/12 09:30:00 --------------------------------------
07/13 08:46:00 EVENT: IN
07/13 15:29:00 EVENT: IN
07/15 10:11:00 EVENT: IN
07/15 10:11:00 BUILDING: A
07/15 10:11:00 ROOM: 101
07/15 10:11:00 MEMBER: DONALD, GARETH, BOBBY
07/15 10:11:00 --------------------------------------
我的问题是如何只打印符合所有 3 个条件的行?
感谢您的帮助!