读取文本文件中包含字符串的最后一行

本文关键字:一行 最后 文件 取文本 包含 字符串 读取 | 更新日期: 2023-09-27 18:29:54

我有一个文本文件:

ABCD - 11111
111212
13121

ABCD - 1213
12312
34534

ABCD - 21312
123123
123123

如何从最后一行以"ABCD"开头读取到文件末尾。在上面的例子中,结果是:

ABCD - 21312
123123
123123

读取文本文件中包含字符串的最后一行

如果将文件读取到string中,则可以使用SubstringLastIndexOf来完成此操作。

string inputText = "ABCD - 11111'n111212'n13121'n'n'n" +
                   "ABCD - 1213'n12312'n34534'n'n'nABCD - 21312'n123123'n123123";
string remainingText = inputText.Substring(inputText.LastIndexOf("ABCD"));

LastIndexOf将确定字符串ABCD出现的最后一个索引(在本例中为54)。

Substring将删除该索引之前出现的所有文本,以获得您期望的结果。

因此remainingText将包含值:

ABCD - 21312'n123123'n123123

首先将文件读取为字符串,然后使用LastIndexOf("ABCD")查找模式最后一次出现的位置,最后使用SubString提取它。

 string path = @"c:'temp'MyTest.txt"; 
 string readText = File.ReadAllText(path);
 int position = readText.LastIndexOf("ABCD");
 string toEnd = readText.Substring(position ,readText.Length - position).

使用System.IO命名空间的方法File.ReasAllText将读取txt文件的内容。将值分配给字符串变量。

File.ReadAllText("sample.txt");

然后查找字符串的最后一次出现

// Find the last occurrence of ABCD.
int index = sString.LastIndexOf('ABCD');

然后使用子字符串从最后一个索引中获取字符串值。

 string subStr = sString.Substring(index);

如果您想要一些性能或效率,我不会将整个文件读取到内存中(尤其是在文件很大的情况下)。我会使用FileStreams with Seek方法从文件的最后三行开始读取。具体实现取决于您的数据格式。如果最后三行没有严格的格式,那么从每个字节的末尾字节开始读取,直到读取三行新行。当然,代码并不是那么简单,但您可以获得最佳效率。