2017-04-06 50 views
-6

我有一个StreamReader reader在那里我有内容如下
抓取线列表在C#

一些文字在这里在这里
测试文字
TEST_START ,,,,,,
试验中,如图1所示,文本
测试,2,文本
试验,如图3所示,文本
测试,4,文本
试验,如图5所示,文本

TEST_STOP ,,,,,,
一些文本这里

我需要在下面的代码使用的list.I获取TEST_STARTTEST_STOP之间的界限,但不知道我错过了在这里拍摄的东西
Reference

string start_token = "TEST_START"; 
string end_token = "TEST_STOP"; 
string line; 
bool inCorrectSection = false;  
while ((line = reader.ReadLine()) != null) 
{ 
    if (line.StartsWith(start_token)) 
    { 
     if (inCorrectSection) 
     { 
      break; 
     } 
     else if(line.StartsWith(end_token)) 
     {       
      inCorrectSection = true; 
     } 
    } 
    else if (inCorrectSection) 
     myList.Add(line); 
} 
+1

好了,那你试试? – BugFinder

+0

你的问题是什么? –

+0

您是要求我们为您编写代码还是您有一些代码来显示您试图解决您的问题? – Steve

回答

1

它看起来像你只需要稍微更改逻辑:

  1. 当您找到起始行时,将您的变量设置为true(并继续循环)。
  2. 当您找到最后一行时,将您的变量设置为false(并继续循环,或者如果您只希望有一个段捕获,则打破循环)。
  3. 如果你的变量为真,捕捉线

例如:

while ((line = reader.ReadLine()) != null) 
{ 
    if (line.StartsWith(start_token)) 
    { 
     // We found our start line, so set "correct section" variable to true 
     inCorrectSection = true; 
     continue; 
    } 

    if (line.StartsWith(end_token)) 
    {       
     // We found our end line, so set "correct section" variable to false 
     inCorrectSection = false; 
     continue; // Change this to 'break' if you don't expect to capture more sections 
    } 

    if (inCorrectSection) 
    { 
     // We're in the correct section, so capture this line 
     myList.Add(line); 
    } 
} 
+0

谢谢Rufus,它的工作很好。我能够得到这些线。 – SDLBeginner