C#和ASP.NET中的换行符变化是什么? (\ r \ n vs. \ n)

时间:2009-05-31 19:04:26

标签: c# asp.net asp.net-mvc newline

我从一开始就为ASP.NET编写代码,今天我遇到了一些我以前从未见过的东西。通常情况下,我通过期待“\ r \ n”来查找C#中的换行符(例如,当从textarea发布在ASP.NET中时)。现在我正在使用MVC框架,来自textarea的线路文本只有“\ n”用于换行符。

旧学校TextBox控件中是否有某些内容可以规范换行符?由于MVC只是按原样使用表单数据,这是正常的吗?很想得到一些见解。

3 个答案:

答案 0 :(得分:6)

我观察到实际的换行顺序因浏览器而异。

如果您在页面上有多行textarea并且页面已提交,则:​​

IE返回“\ r \ n”以表示换行符。在这种情况下,FF返回“\ n”。

我在2006年底的某个地方进行了测试,所以现在可能会有所不同。

我不相信它可能与WebForms与MVC有任何关系。两者都只是处理提交的输入并按原样返回给你。

如果您希望以某种方式处理和替换这些字符,那么按照从长短的顺序进行处理是有意义的:

string userText = form["Text"];
userText = userText.Replace ("\r\n", "<br/>").Replace ("\r", "<br/>");

答案 1 :(得分:4)

\ n是* nix风格系统上的行结尾变体。 \ r \ n是特定于Windows的行结束行为。

如果您正在检查行结尾并将您的界面暴露给非Windows环境,请务必不仅要检查\ r \ n,还要检查\ n是否单独使用。

更多背景信息,请查看维基百科上的Newline文章。

答案 2 :(得分:1)

我正在使用Environment.NewLine

string userText = form["Text"];
userText = userText.Replace (Environment.NewLine, "<br />")

另请查看@Haacked关于某些newline textarea quirks的帖子。