使用Visual Studio 2010和C#

这已经工作了很多年了...

 string myString= txtSomeMultiLineTextBox.Text;
 string str = myString.Replace(System.Environment.Newline, "<br />");

设置断点时,如果myString = LineOne\nLineTwo\nLineThree
\n不被替换...
然后str = myString
没有替代。
myString保持不变

我到处都在研究Environment.Newline以及与操作环境的区别,而我所使用的是Windows 7。

此环境不会改变。

为什么Environment.Newline无法读取\n?

谢谢,

最佳答案

假设您已将其标记为asp.net,那么我将假定txtSomeMultiLineTextBox最终是TextArea
TextArea返回由\n\r\n分隔的文本,具体取决于特定的浏览器版本。 (IE以前始终使用\r\n,现在使用\n,奇怪但正确。)

因此,它之所以能够正常工作,是因为您在IE的早期版本上进行了测试,其中\r\n被用作新行,而您现在正在使用IE 10、11或Chrome,而\n是新行。

因此,为了容忍这两种情况,请执行以下操作:

myString.Replace("\r\n", "\n").Replace("\n", "<br />");

并一劳永逸地清除此问题:

不信任Environment.NewLine为您解决此问题。

如果您的环境是Windows,那么即使在Microsoft产品中,也没有在各处使用统一的新行。最好准备好卷起袖子并自己调整线条末端。

关于c# - System.Environment.NewLine和\n,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22058635/

10-13 00:00