簡體   English   中英

讀取文本文件的前一行; 如果當前行包含“X”

[英]Read a preceding line of a text file; if current line contains “X”

目前,我正在讀取特定條目“X”的文件。 一旦我找到這個條目,我可以在任何后續行中做我需要做的事情但是在“X”出現之前有一條信息需要2行。 現在我可以使用var line = reader.ReadLine(); 在文件中向前移動並讀取“X”之后的行。 我如何回過頭來讀取2行數據?

while (!reader.EndOfStream)
{
    var line = reader.ReadLine();

    if (line.Contains("X"))
    {
        Processing
    }
}

隨身攜帶保存:

string prev1;
string prev2;

while (!reader.EndOfStream)
{

    var line = reader.ReadLine();

    if (line.Contains("X"))
    {
        Processing
    }

    prev2 = prev1;
    prev1 = line;
}

如果你需要更多,它可以很容易地轉換成你推/拉的隊列。

您可以使用返回字符串數組的File.ReadAllLines而不是StreamReader

string[] lines = File.ReadAllLines("file.txt")
for (int i = 0; i < lines.Length; i++)
{
    if (lines[i].Contains("X") && i >= 2)
    {
         string res = lines[i-2];
    } 
}

存儲前兩行:

string [] lineprev = new string[]{"",""} ;
while (!reader.EndOfStream)
{
    var line = reader.ReadLine();
    if (line.Contains("X"))
    {
        // Processing : Find info in lineprev[1]
    }
    lineprev[1]=lineprev[0] ;
    lineprev[0]= line ;
}

盡量將前一行保留在內存中,以便在需要時可以訪問它。 像這樣的東西:

var prev;
while (!reader.EndOfStream)
{
    var line = reader.ReadLine();

    if (line.Contains("X")) {
        // Processing both line and prev
    }

    prev = line; // remember previous line for future use
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM