2014-02-18 5 views
2

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

01 some Data 
02 some Data 
02 some data 
03 some data(End of client 1) 
01 some data 
02 some data 
02 some data 
02 some data 
03 some data(End of client 2) 

Я хочу, чтобы подсчитать, сколько раз появляется значение 02 и отображать его после окончания каждого клиента.

Я использую этот кусок кода для подсчета

int count = File.ReadLines(@"C:\Exercises\gamenam.dat").Count(
       line => line.StartsWith("02") 
       ); 

Я хочу знать, как вы показываете его после окончания каждого клиента, т.е. после 03?

+2

Попробуйте использовать цикл для перебора результата 'ReadLines' себя, а не одной из функций LINQ в этом случае , –

+2

Почему не простой подход? Прокручивайте линии, увеличивайте счетчик, если строка начинается с 02, при определенном числе итераций, сбросьте счетчик и распечатайте результат. –

ответ

0

Это может быть проще сделать с петлей и регулярным выражением:

int count = 0; 
foreach (string line in File.ReadLines(@"C:\Exercises\gamenam.dat")) 
{ 
    if (line.StartsWith("02")) 
     count++; 

    Match clientMatch = Regex.Match(line, @"(?<=\(End of client)\d+(?=\))"); 
    if (clientMatch.Success) 
    { 
     // Replace line below with write to output file 
     Console.WriteLine("Client {0} has {1} occurrences of \"02\".", 
          clientMatch.Value, count); 
     count = 0; 
    } 
} 
+0

Спасибо за ваш ответ Дуглас Но (Конец клиента) не существует в текстовом файле, я просто положил его туда, чтобы вы могли понять, что он представляет 1 клиента. Мой вопрос заключается в том, как прочитать последнее значение клиента и после этого показать, сколько раз 02 появляется – user3321109

+0

Каков ваш адрес электронной почты, который показывает вам, как он выглядит, как – user3321109

+0

@ user3321109: Как вы идентифицируете, что клиент закончился? Не могли бы вы опубликовать отредактированный пример на ваш вопрос? – Douglas

0

Best сделан с петлей. Смотрите пример кода ниже:

  System.IO.StreamReader File = new System.IO.StreamReader(@"C:\Exercises\gamenam.dat"); 
     System.IO.StreamWriter File2 = new System.IO.StreamWriter(@"C:\Exercises\gamenam_result.dat"); 

     string line; 
     int count = 0; 

     while ((line = File.ReadLine()) != null) 
     { 
      if (line.StartsWith("02")) 
       count++; 
      if (line.Contains("End of client")) 
      { 
       File2.Write(count.ToString() + "\n"); 
       count = 0; 
      } 
     } 

     File.Close(); 
     File2.Close(); 

Вы можете отформатировать его, как вы ...

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