2014-09-24 158 views
-2

如何從文本文件中刪除空行並使用StreamReader在C#中啓動下一行。如何從C#中的文本文件中刪除空行#

我的代碼,

try 
{ 
    StringBuilder sb = new StringBuilder(); 
    if (File.Exists(Server.MapPath("OrderDetails.txt"))) 
    { 
     string sFileName = Server.MapPath("OrderDetails.txt"); 
     using (StreamReader StreamReader1 = new StreamReader(sFileName)) 
     { 
      sb.Append(StreamReader1.ReadToEnd()); 
      StreamReader1.Close(); 
      try 
      { 
       if (Session["Package1"].ToString() == "true") 
       { 
        sb.Replace("{Package1}", "Package1"); 
       } 
       else 
       { 
        sb.Replace("{Package1}", null); 
       } 

       if (Session["Package2"].ToString() == "true") 
       { 
        sb.Replace("{Package2}", "Package2"); 
       } 
       else 
       { 
        sb.Replace("{Package2}", null); 
       } 

       if (Session["Package3"].ToString() == "true") 
       { 
        sb.Replace("{Package3}", "Package3"); 
       } 
       else 
       { 
        sb.Replace("{Package3}", null); 
       } 

      } 
      catch { } 
     } 
    } 

    return sb.ToString(); 
} 
catch (Exception ex) 
{ 
    return ""; 
} 

我得到以下輸出時會話[ 「包2」]是 「假」,

包1

//我收到線SPCE這裏

包3

我想這樣的輸出,當會話[ 「包2」]是 「假」,

包1

包3

我使用VS2008(3.5)。

+0

什麼是檢查在這種醜陋的方式布爾值'的原因,如果(會話[「包2」]的ToString()==「真」)''沒有如果(會話[「Package2」])'? – 2014-09-24 06:57:51

回答

0

所以你想跳過只有空格的行嗎?使用ReadLine,而不是給讀者前進到下一行並檢查它是否是空的:

string line; 
using (StreamReader StreamReader1 = new StreamReader(sFileName)) 
{ 
    while ((line = StreamReader1.ReadLine()) != null) 
    { 
     if (!string.IsNullOrEmpty(line.Trim())) 
      sb.AppendLine(line); 
     // ... 
    } 
} 
+0

IsNullOrWhiteSpace顯示錯誤,因爲我使用3.5 verson – Srinivas 2014-09-24 06:57:02

+0

@ 1612:已經更正:) – 2014-09-24 06:57:35

0

在你的StringBuilder從包括用於表示換行字符的文件追加的一切。但是,當您嘗試更換代碼時,只會替換除換行符之外的字符串的字符。這個換行符保留在StringBuilder緩衝區中並導致空行。

我會嘗試

...... 
string replacement = (Session["Package1"].ToString() == "true" ? 
              "Package1" + Environment.NewLine, ""); 
sb.Replace("{Package1}" + Environment.NewLine, replacement); 
......