2014-02-05 6 views
2

Я пытаюсь разобрать logfile (текстовый файл, сохраненный как файл *.log) в Visual Basic 2013 Express 'DataGridView. Файл журнала использует пробелы в качестве разделителя, но часть сообщения содержит пробелы. Вот расположение файла журнала:Файл журнала анализа с пробелами

Дата Время ID подключения Type_of_message (команда/ответ/статус/и т.д.) сообщений (может включать в себя ряд пробелов (не то же самое количество пространства на сообщение))

Каждая запись в журнале представляет собой отдельную строку в файле.

EDIT: Вот an example of the log file:

2014-02-03 15:35:29 9900 3 Status: Listing directory [[server folder]] 
2014-02-03 15:35:46 9900 3 Status: Invalid character sequence received, disabling UTF-8. Select UTF-8 option in site manager to force UTF-8. 
2014-02-03 15:35:46 9900 3 Status: Calculating timezone offset of server... 
2014-02-03 15:35:46 9900 3 Command: mtime "[[file name]]" 
2014-02-03 15:35:46 9900 3 Response: 1382557913 
2014-02-03 15:35:46 9900 3 Status: Timezone offsets: Server: -14400 seconds. Local: -18000 seconds. Difference: -3600 seconds. 
2014-02-03 15:36:18 9900 2 Status: Connected to [[server name]] 
2014-02-03 15:36:18 9900 1 Status: Starting upload of [[local folder name/file name (includes 3 spaces)]] 
2014-02-03 15:36:18 9900 1 Command: cd "[[server folder]]" 
2014-02-03 15:36:18 9900 2 Status: Starting upload of [[local folder name/file name (includes 3 spaces)]] 
2014-02-03 15:36:18 9900 1 Response: New directory is: "[[server folder]]" 
2014-02-03 15:36:18 9900 1 Command: put "[[local folder name/file name (includes 2 spaces)]]" 
2014-02-03 15:36:18 9900 2 Command: cd "[[server folder]]" 
2014-02-03 15:36:18 9900 1 Status: local: [[local folder name/file name (includes 3 spaces)]]=> remote:[[server folder]] 
+0

Просто игнорировать пробелы между скобками –

+0

Помимо пространства быть разделитель, что формат вашего журнала файл? Приведите несколько строк в качестве примера. – Neolisk

+1

@Neolisk Я только что редактировал свой вопрос со ссылкой на пример моих файлов журналов. – CampSoup1988

ответ

2

Это может быть не очень, но это работает:

Dim line As String = "2014-02-03 15:35:29 9900 3 Status: Listing directory [[server folder]]" 
Dim split As String() = line.Split(" "c) 
Dim message As String = String.Join(" "c, split.Skip(5).ToArray) 

Это предполагает, что у вас есть 6 столбцов в общей сложности, и последний это ваше сообщение.

EDIT: Как было предложено @ Андрей Мортон, раскол не может быть переписан (не LINQ):

Dim split As String() = line.Split({" "c}, 6, StringSplitOptions.None) 
+1

Или 'Dim parts = line.Split (" ".ToCharArray(), 5, StringSplitOptions.None)' используя один из [String.Split] (http://msdn.microsoft.com/en-us/library/ ms131450% 28v = vs.110% 29.aspx) перегрузки. –

+0

Это правильно, я планирую иметь только 6 столбцов. Я попрошу ваш скрипт. – CampSoup1988

+0

@AndrewMorton: Первоначально я искал эту перегрузку, но VS не предлагал ее мне, поэтому я подумал, что, возможно, вспомнил что-то не так. Спасибо за упоминание - включен в EDIT. – Neolisk

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