2014-09-24 340 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); 
......