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

时间:2014-11-11 05:48:35

标签: c#

我有一个文本文件:

ABCD - 11111
111212
13121


ABCD - 1213
12312
34534


ABCD - 21312
123123
123123

如何从最后一行开始阅读' ABCD'到文件结束。在上面的例子中,结果是:

ABCD - 21312
123123
123123

4 个答案:

答案 0 :(得分:0)

首先将文件读入字符串,然后使用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).

答案 1 :(得分:0)

如果您将文件读入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

答案 2 :(得分:0)

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

File.ReadAllText("sample.txt");

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

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

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

 string subStr = sString.Substring(index);

答案 3 :(得分:0)

如果你想要一些性能或效率,我不会将整个文件读入内存(特别是如果它会变大)。我会使用FileStreams和Seek方法从文件的最后三行开始读取。确切的实现取决于您的数据格式。如果您没有最后三行的严格格式,则从每个字节的结束字节读取,直到您读取三个新行。当然代码并不是那么简单,但是你获得了最好的效率。