У меня есть отформатированный файл журнала, который я пытаюсь проанализировать; файл разделен на разделы с заголовком, а данные внутри каждого раздела отформатированы в формате JSON следующим образом. Ссылка на извлечение файла журнала здесь
[UnityCrossThreadLogger]1/8/2019 7:49:19 PM
==> Deck.GetDeckLists(112):
{
"jsonrpc": "2.0",
"method": "Deck.GetDeckLists",
"params": {},
"id": "112"
}
Моя проблема здесь заключается в том, чтобы манипулировать всей строкой так, как я попадаю в нужный раздел, и там отбрасываю бессмысленные данные и анализирую оставшиеся через Newtonsoft JSON
. Пока что я обрезаю все, что мне не нужно, используя эту функцию, поскольку файл журнала находится в хронологическом порядке, и требуется только самое последнее вхождение записи:
//Cut the whole log to the last entry
private static string CutLog(string fromWhereToCut)
{
string log = GetLog();
//In this case fromWhereToCut would be "Deck.GetDeckLists"
string s = log.Substring(log.LastIndexOf(fromWhereToCut));
return s;
}
Проблема в том, что я t оставляет заголовок на месте, который мне нужно удалить перед десериализацией JSON, и он склонен к разрыву, потому что названия разделов не настолько уникальны и они могут быть повторены далее как заголовки без заголовка (как видно из моего примера). Кроме того, я не знаю, как остановиться в конце нужного мне раздела, прежде чем начнется другой.
Я думал, что можно использовать RegEx, но это кажется большим, даже для RegEx, и, возможно, есть лучшее решение.