使用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?
谢谢,
答案 0 :(得分:8)
鉴于您已将此标记为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产品中也是如此。最好准备卷起袖子,为自己规范线条结束。
答案 1 :(得分:4)
因为Environment.NewLine
与平台有关。
Environment.NewLine
为\r\n
。这是一个回车和换行。
如果您的字符串仅包含\n
..则它无法替换\r\n
..因为该分组不存在。
作为测试..只需替换\n
..:
string myString= txtSomeMultiLineTextBox.Text;
string str = myString.Replace("\n", "<br />");
答案 2 :(得分:1)
这是因为System.Environment.Newline由回车符和新行字符"\r\n"
组成,因此它与“\ n”不匹配