2014-12-09 3 views
1

У меня есть файл журнала (txt-файл), из которого я хочу читать только определенные строки. Эти строки включают определенный набор слов, за которыми следует число.Чтение номеров из текстового файла, содержащего буквы и цифры

Например, строки, которые я хочу прочитать из файла следующим образом:

  • 10:03 Всего запросов приняли 238,9 воен

  • 10:08 Всего запросов приняли 659,8 Mili

Как написать код, который занимает всего лишь query исполнений (mili) и добавить их?

Я получил вниз часть чтение из текстового файла только те строки, которые включают в себя «Всего запросов приняли», но я застрял здесь

+0

Что вы сделали до сих пор? Любые усилия? –

+0

Пожалуйста, покажите (часть) вашего ввода 'файл'. – Sybren

+0

Я получил часть чтения файла с помощью StreamReader и печатал только строки, содержащие «общий запрос», но я не могу понять, как извлечь числа, которые следуют за этими словами. –

ответ

1
  1. Прочитайте текст из файла. StreamReader может это сделать. Посмотрите на пример в ссылке.
  2. Получите номер из текста. Вы можете использовать Substring и IndexOf, а также Convert.ToDouble. Если вы хотите быть фантазией, вы можете даже использовать Regular Expressions, но это излишне.
  3. Добавить цифры.
0

Это должно быть легко с Regular Expression. Я предполагаю, что строка находится на строке.

String str_line = "your line from file" ; 
Regex regex = new Regex(@"\d.*"); 
Match match = regex.Match(str_line); 
if (match.Success) 
{ 
    //you got the value with "match.Value;" 
} 
0
public decimal ReadMilliseconds() 
{ 
    var lines = File.ReadLines(@"\path\to\file"); 
    decimal totalMilliseconds = 0; 

    foreach (string line in lines) 
    { 
     var match = Regex.Match(line, @"(?<ms>\d*\.?\d*)\s*mili"); 

     if (!match.Success) continue; 

     decimal value = decimal.Parse(match.Groups["ms"].Value, new CultureInfo("en-US")); 

     totalMilliseconds += value; 
    } 

    return totalMilliseconds; 
} 
Смежные вопросы