Я пытаюсь проанализировать файлы журнала из чата с помощью c #, проблема, с которой я сталкиваюсь, заключается в том, что он не предназначен для анализа, так как не использует стандартные разделители. Вот пример типичной строки из файла:
2010-08-09 02:07:54 [Message] Skylar Morris -> (ATL)City Waterfront: I'll be right back
date time messageType userName -> roomName: message
Поля, которые я хотел бы сохранить:
Дата и время объединились как тип DateTime
MessageType
имя_пользователя
roomName
сообщение
Если бы его можно было разделить стандартным разделителем, таким как пробел, табуляция или запятая, это было бы довольно просто, но я не знаю, как его атаковать.
Как продолжение, используя этот код в качестве шаблона:
List<String> fileContents = new List<String>();
string input = @"2010-08-09 02:07:54 [Message] Skylar Morris -> (ATL)City Waterfront: I'll be right back";
string pattern = @"(.*)\[(.*)\](.*)->(.+?):(.*)";
foreach (string result in Regex.Split(input, pattern))
{
fileContents.Add(result.Trim());
}
Я получаю 7 элементов (один пустой до и после) из 5 ожидаемых. Как я могу исправить это?
foreach (string result in Regex.Split(input, pattern)
**.Where(result => !string.IsNullOrEmpty(result))**)
{
fileContents.Add(result.Trim());
}
Хорошо, удалось решить с помощью приведенного выше кода.