2010-08-03 71 views
0

Environnent.NewLine似乎解析爲兩個空格「」(與vbCrLf和ControlChars.CrLF一樣)。使用StringBuilder,AppendLine也是這樣做的。.NET中的Environment.NewLine沒有正確的值

我一直在絞盡腦汁搜尋互聯網,試圖找出它爲什麼這樣,但我會空虛。

我想根據用戶界面決定生成.bat文件。我需要在線條之間分開。我試圖:

Dim sb as New StringBuilder 
With sb 
.Append("Something") 
.AppendLine() 
.Append("Something else{0}", Environment.NewLine) 
.Append("Third line") 
End With 

當我解決sb.ToString(),一切都在一行。在crlf應該是,有兩個空格(十六進制20)。

這是Visual Studio 2010 Ultimate。

幫助!謝謝。

回答

2

StringBuilder.Append不帶格式字符串。你想要AppendFormat

Dim sb as New StringBuilder 
With sb 
.Append("Something") 
.AppendLine() 
.AppendFormat("Something else{0}", Environment.NewLine) 
.Append("Third line") 
End With 

另外,根據其中您要查看它(如,Visual Studio調試器窗口) - 新行可能被替換。

+0

我不確定這是完全如此(儘管絕對是一個問題與他的職位代碼) - 請注意,他有一個AppendLine在那裏,但一切仍然被寫入一行。 – MisterZimbu 2010-08-03 17:01:39

+0

@MisterZimbu - 我的心理調試告訴我他寫了BAT文件;注意到他沒有得到他的新線;嘗試了vbCRLF和ControlChars.CrLF;看着調試器窗口,看到空格;張貼到SO問「爲什麼這些空間」。如果他回到BAT文件,他會看到只有他的Environment.NewLine沒有顯示。 *真正的*問題是AppendFormat - 只是因爲他沒有進行調試練習和匿名代碼而被遮住了。 – 2010-08-03 18:38:12

0

你確定是這樣嗎?你有沒有嘗試輸出你的字符串到文件或控制檯來驗證你沒有獲得換行符?

我會推薦至少輸出到控制檯窗口先驗證您的問題,然後對此進行評論。

對於它的價值,當我複製你的代碼,並輸出到一個WinForms RichTextBox控件,輸出率爲:

東西
別的東西
三 線

我的源代碼(C#)如下:

void Form1_Load(object sender, EventArgs e) 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("First Line").AppendLine().Append(String.Format("SecondLine{0}", Environment.NewLine)).Append("ThirdLine"); 
     richTextBox1.Text = sb.ToString(); 
    } 
+0

這是尷尬。事實上,一切正常。我從立即窗口複製並粘貼,在那裏CrLf被空間替換了。 謝謝你的幫助。抱歉浪費了大家的時間。 – rht341 2010-08-05 10:45:19