C# System.Environment.NewLine和\n

C# System.Environment.NewLine和\n,c#,asp.net,.net,C#,Asp.net,.net,使用VisualStudio2010和C# 多年来,这种方法一直行之有效 string myString= txtSomeMultiLineTextBox.Text; string str = myString.Replace(System.Environment.Newline, "<br />"); string myString=txtsomemultilitextbox.Text; string str=myString.Replace(System.Environme

使用VisualStudio2010和C#

多年来,这种方法一直行之有效

 string myString= txtSomeMultiLineTextBox.Text;
 string str = myString.Replace(System.Environment.Newline, "<br />");
string myString=txtsomemultilitextbox.Text;
string str=myString.Replace(System.Environment.Newline,“
”);
设置断点时,如果myString=LineOne\nLineTwo\nLineThree
没有替换\n
然后str=myString
没有替代品。
myString保持不变


我到处都在研究环境、新线以及与操作环境的区别,我使用的是Windows7。
这种环境不会改变。
为什么Environment.Newline未读取\n


谢谢,

因为<代码>环境。新行依赖于平台

Environment.NewLine
在非Unix(…Windows)平台上是
\r\n
。那是回车和换行

如果字符串仅包含
\n
。。那么它就不能替换
\r\n
。。因为那个分组不存在

作为测试。。只需更换
\n

string myString= txtSomeMultiLineTextBox.Text;
string str = myString.Replace("\n", "<br />");
string myString=txtsomemultilitextbox.Text;
字符串str=myString.Replace(“\n”和“
”);
这是因为System.Environment.Newline由回车符和新行字符ie
“\r\n”
组成,因此它与““\n”

不匹配,因为您已将其标记为
asp.net
,我假设
txtsomemultilitextbox
最终是一个
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 />");
myString.Replace(“\r\n”、“\n”)。Replace(“\n”、“
”);
为了彻底解决这个问题:

不要相信Environment.NewLine会为您解决此问题。


如果您的环境是Windows,那么就没有一个统一的新行在任何地方使用,即使在Microsoft产品中也是如此。最好准备卷起袖子,让自己的行尾正常化。

是的,我已经考虑过了,但我喜欢开发,以防出现其他系统/浏览器等。问题仍然是,为什么?为什么?为什么它不读取
\n
?因为在WIndows上,
Environment.NewLine
不是
\n
。。。它的
\r\n
一起..如果要确保换行符被替换,无论它们是回车换行符对还是换行符对,请尝试以下操作:
string str=myString.Replace(“\r\n”,“
”).Replace(“\n”,“
”)或使用正则表达式:
Regex.Replace(输入“\r?\n”,“\n”)
通常,在写入文件或控制台时,仅使用
Environment.NewLine
。阅读时,使用一些不变的东西。你是对的。我在旧浏览器上做了一些测试,它的工作原理和我预期的一样。感谢其他人的回答。。。。。回顾十多年的编程经历,这对我们来说是一个有趣的话题!