2016-10-25 4 views
-2

Я хочу, чтобы получить ниже строки из файла журнала,Поиск и сохранение строки между два строкой

Name: OnError 
Computer: 
Operator: 
Source Name: 
Source GUID: 
Execution GUID: 
Message: A connection could not be made to the data source with the DataSourceID of 'xyz', Name of 'abc'. 
Start Time: 2016-09-29 05:40:08 
End Time: 2016-09-29 05:40:08 
End Log 

Моего ключевого слова для поиска строки является OnError. От строки OnError до End Log мне нужно взять и хранить в массиве.

Пожалуйста, дайте ваше предложение для писать код выше

+0

Возможно ли, чтобы часть сообщения содержала текст «Конечный журнал» внутри этой части? – hatchet

+0

Нет топора. Часть сообщения не будет содержать текст «Конечный журнал». –

ответ

0
public string GetData(string filePath) 
{ 
    StringBuilder sb = new StringBuilder(); 
    bool flag = false; 
    using (var reader = new StreamReader(filePath)) 
    { 
     while (!reader.EndOfStream) 
     { 
      var line = reader.ReadLine(); 

       if (line.Contains("OnError") || flag) 
      { 
       sb.Append(line); 
       sb.AppendLine(); 
       flag = true; 

      } 

      if (line.Contains("End Log")) 
      { 
       flag = false; 
      } 

     } 
     return sb.ToString(); 
    } 
} 

Я предполагаю, что у вас есть только одно вхождение (OnError и End Вход) данного рисунка в этом примере. Вы можете развернуть его, если есть несколько вхождений этого шаблона. Сначала найдите строку, содержащую OnError, а затем прочитайте до строки, содержащей End Log.

+0

Спасибо Vivek. Этот код работает для меня. –

+0

@ VigneshR теперь у вас есть время окупаемости :) –

0

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

Regex regex = new Regex("OnError(.*)End Log"); 
var matches = regex.Matches(yourString); 

foreach(Match match in matches) 
    .... 
+0

Обеспечивает ли это, что «Конечный журнал» находится в начале новой строки? – hatchet

+0

Спасибо Стив за ваши входы. позвольте мне попробовать это. –

+0

Нет, Стив. «Конец журнала» будет завершен шаг в файле журнала, который будет выглядеть как «Log: Name: Computer: ...... End Log» –

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