r和n有什么不同?我认为这与Unix、Windows和Mac有关,但我不确定它们到底有什么不同,以及在正则表达式中搜索/匹配哪个。
当前回答
他们是不同的角色。\r是换行,\n是换行。
在“老式”打印机上,r将打印头送回行首,n将纸张向前移动一行。因此,要开始下一行的打印,两者都是必要的。
显然,现在这有点无关紧要,尽管取决于控制台,您仍然可以使用\r移动到行开始并覆盖现有的文本。
更重要的是,Unix倾向于使用\n作为行分隔符;Windows倾向于使用\r\n作为行分隔符,而mac(直到OS 9)则使用\r作为行分隔符。(Mac OS X是Unix-y,所以使用\n代替;不过,在一些兼容的情况下,可能会使用\r代替。)
有关更多信息,请参阅维基百科换行文章。
编辑:这是语言敏感的。例如,在c#和Java中,\n总是表示Unicode U+000A,它被定义为换行。在C和c++中,水有些浑浊,因为其含义是特定于平台的。详见评论。
其他回答
除了@Jon Skeet的回答:
传统的Windows使用\r\n, Unix \n和Mac \r,但是新的Mac使用\n,因为它们是基于Unix的。
简而言之,\r的ASCII值为13 (CR), \n的ASCII值为10 (LF)。 Mac使用CR作为行分隔符(至少,它以前是这样做的,我不确定现代Mac), *nix使用LF, Windows同时使用(CRLF)。
\r用于回车。(ASCII值为13) \n用于新行。(ASCII值为10)
\r是用来指向一行的开始,可以替换从那里开始的文本。
main()
{
printf("\nab");
printf("\bsi");
printf("\rha");
}
产生如下输出:
hai
\n是新线。
\r是回车;\n是换行(换行)…这取决于操作系统。阅读这篇文章,了解更多关于“\n”和“\r\n”的区别…在C。
推荐文章
- 使用JavaScript从字符串中删除除空格之外的所有特殊字符
- 如何在Ruby中读取文件的行
- Visual Studio规范不一致的行尾是什么意思?
- 什么是垂直标签?
- 使用Bash时需要转义哪些字符?
- 试图修复行结束与git过滤器分支,但没有运气
- 期望换行符是“LF”,但发现“CRLF”换行风格
- \r和\n有什么区别?
- $?(美元问号)的shell脚本
- 从字符串中删除特殊字符的最有效方法
- 使用RegExp删除所有特殊字符
- 为什么我要用核心。在Git中为true ?
- 如何找出文本文件中的行结束符?
- 如何写字符&在androidstrings .xml
- 将^M (Windows)换行符转换为普通换行符