2013-09-05 78 views
1

我想讀的每一行,並發現如果我行說,「項目」,然後拿該行的子串(串,8 - 之後的任何word Project)作爲示例,並將其複製到每行後面的每一行的末尾,直到新行顯示「Project」。它應該保持循環直到我的文件結束。這是我迄今爲止所擁有的。我的腳本停止並僅顯示正在讀取的第一行。如何添加一行地讀線和每行後追加文本的條件

private void CreateFile_Click(object sender, EventArgs e) 
    { 

     try 
     { 
      var list = new List<string>(); 

      using (var sr = new StreamReader("C:\\File1.txt")) 
      { 
       string line; 

       if ((line = sr.ReadLine()) == " PROJECT") 
       { 

        while ((line = sr.ReadLine()) != null) 
        { 
         list.Add(line + "DATA"); 
        } 
       } 
       else 
       { 
        list.Add(line); 
       } 
      } 

      TextBox.Text = string.Join(Environment.NewLine, list.ToArray()); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("An error has occurred" + ex.Message); 
     } 
    } 

回答

0

也許我明白你的要求:

using (var sr = new StreamReader("C:\\File1.txt")) 
{ 
    string line; 
    string currentProject = null; 
    while ((line = sr.ReadLine()) != null) 
    { 
     int index = line.IndexOf(" PROJECT", StringComparison.OrdinalIgnoreCase); 
     if (index >= 0) 
      currentProject = line.Substring(index + 9); 
     else 
      list.Add(string.Format("{0} {1}",line, currentProject)); 
    } 
} 

有兩個ReadLine在推進讀者到下一行的if

+0

這是完美的! –

+0

這只是給你排隊嗎? int index = line.IndexOf(「PROJECT」,StringComparison.OrdinalIgnoreCase); –

+0

不,它會爲您提供另一個字符串中子字符串的索引。在這種情況下,PROJECT在該行中的位置。如果未找到字符串,IndexOf返回-1。我已經使用StringComparison.OrdinalIgnoreCase向您展示如何以不區分大小寫的方式進行搜索。默認。 NET是區分大小寫的,這意味着Project!= PROJECT。 –

相關問題