Извлечение блока текста после последнего экземпляра указанной строки c - PullRequest
0 голосов
/ 31 января 2020

У меня есть текстовый файл, из которого мне нужно извлечь блок текста после последнего экземпляра указанной строки c. Чтобы лучше проиллюстрировать, что нужно:

SpecificString#1:
 TextBlock#1
SpecificString#2:
 TextBlock#2
...
SpecificString#5:
 TextBlock#5

Все указанные строки c идентичны, и количество экземпляров может варьироваться. Пока что я могу извлечь все TextBlocks после первого экземпляра указанной строки c со следующим кодом:

const string separator = "SpecificString";
var separatorIndex = myTextFileString.IndexOf(separator, StringComparison.CurrentCultureIgnoreCase);
var requiredTextBlock = myTextFileString.Substring(separatorIndex + separator.Length);

Однако я хотел бы получить только последний блок текста (TextBlock # 5 в этом случае). Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 31 января 2020

Возможно, вам следует прочитать текстовый файл по-другому. Например:

string[] allLinesInText = File.ReadAllLines(path);

Возвращает каждую строку в текстовом файле в виде массива строк, из которого вы можете отфильтровать разделители и легко проиндексировать блоки

const string separator = "SpecificString";
var allLines=allLinesInText.Where(x=>!x.Contains(separator));

Если текст файл содержит одну строку, вам нужно попробовать другие предложенные ответы.

1 голос
/ 31 января 2020

Вы можете получить последний индекс разделителя в C#, используя метод String.LastIndexOf(). Пожалуйста, посмотрите на https://docs.microsoft.com/en-us/dotnet/api/system.string.lastindexof?view=netframework-4.8.

Как только вы знаете последний индекс, вы можете выполнить тот же шаг, который вы упомянули выше, чтобы извлечь текстовый блок после него.

...