2017-01-23 4 views
0

Я пытаюсь найти строку, содержащую определенную строку, и распечатать эту целую строку.StreamReader - как читать строку, содержащую определенную строку?

Это то, что я получил до сих пор:

using (StreamReader reader = process.StandardOutput) 
{ 
    string result; 
    string recipe;      
    while ((result = reader.ReadLine()) != null) 
    { 
     if (result.Contains("Recipe:")) 
     { 
      recipe = reader.ReadLine();                
     }        
    }      
} 

Проблема заключается в том, что этот код будет прочитать следующую строку, а не строка, содержащая строку. Как прочитать строку, содержащую текст «Рецепт:»?

+3

У вас уже есть «результат». В чем проблема? – SLaks

ответ

2

Вы хотите использовать текущий result объект вместо этого, который уже содержит текущую строку:

if (result.Contains("Recipe:")) 
{ 
     recipe = result;               
} 

reader.ReadLine() вызова всегда будет возвращать следующей линии для чтения, поэтому, когда вы звоните result = reader.ReadLine() что фактически устанавливая содержимое result вашей текущей строке.

Это объясняет, почему ваш результат был неправильным, когда вы пытались установить recipe внутри вашего цикла, так как установка его на reader.ReadLine() просто прочитала бы следующую строку и использовала бы ее результат.

+0

Я бы сказал, что вы даже не должны хранить одну и ту же строку, просто используйте 'result'. – Dispersia

+0

Отлично! Это сработало. Большое спасибо за объяснение! – AlexC

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