2010-08-03 68 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