2014-11-11 6 views
0

У меня есть текстовый файл:Прочитать последнюю строку, содержащую строку в текстовом файле?

ABCD - 11111 
111212 
13121 


ABCD - 1213 
12312 
34534 


ABCD - 21312 
123123 
123123 

Как я читать с последней строки начинаются с «ABCD» до конца файла. В приведенном выше примере, результат:

ABCD - 21312 
123123 
123123 
+2

Каков ваш код? – Tyress

+1

Если вы знаете содержимое файла, тогда вы можете использовать любые условия для проверки этих данных, можете ли вы показать, как вы продолжаете, я имею в виду ваш рабочий код –

+0

Вы можете прочитать файл в строке и использовать 'i = s.LastIndexOf ("ABCD") ', а затем SubString от i до конца строки – Ahmad

ответ

0

Если прочитать файл в string, вы можете сделать это с помощью Substring и LastIndexOf.

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 
0

Сначала прочитайте файл в строку используйте LastIndexOf («ABCD»), чтобы найти позицию последнего вхождения вашего рисунка и, наконец, использовать подстроку, чтобы извлечь его.

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

Использование метода в пространстве имен System.IO в File.ReasAllText будет читать содержимое текстового файла. Назначьте значение строковой переменной.

File.ReadAllText("sample.txt"); 

Затем найти последнее вхождение строки ABCD

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

Затем с помощью подстроки получить строковое значение из последнего индекса.

string subStr = sString.Substring(index); 
0

Если вы хотите некоторой производительности или эффективности, я бы не прочитал весь файл в памяти (особенно если он будет большим). Я бы использовал FileStreams с методом Seek, чтобы начать читать с конца файла последние три строки. Точная реализация зависит от вашего формата данных. Если у вас нет строгого формата последних трех строк, тогда прочитайте с байта конца на байт, пока не прочитаете три новые строки. Конечно, код не так прост, но вы получаете максимальную эффективность.

Смежные вопросы