c#中的\r跟\n有啥区别的? C#中\t和\n分别是什么意思?有这样的字符串:
区别在于 前者的字节顺序是 0D 0A ,而后者是 0A 0D。
这在显示的时候没什么关系,Unix 系统甚至不需要 。
但是许多因特网协议,比如 FTP、HTTP 就要求 0D 0A。
a="这是第一\t行,这是\\\\第二行。\n这是第\"三\"行";这句赋值语句放到编译器里是报错的。另外\t是TAB,\n换行在计算机还没有出现之前。
有一种叫做电传打字机(TeletypeModel33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。
要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界。
另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。
于是,就出现了分歧。Unix系统里,每行结尾只有“”,即“
”;Windows系统里面,每行结尾是“”,即“
”;Mac系统里,每行结尾是“”。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
于是,就出现了分歧。Unix系统里,每行结尾只有“”,即“
”;Windows系统里面,每行结尾是“”,即“
”。
Mac系统里,每行结尾是“”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行。
而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
扩展资料
C语言数据类型:
C#的数据类型分为:值类型(Valuetypes)、引用类型(Referencetypes)、指针类型(Pointertypes)
值类型:在堆栈中存储他们及内容
布尔值:bool、
字符:char、
小数:float、double、decimal
有符号整数:sbyte、short、int、long
无符号数:byte、uint、ulong
不常用:ensum(枚举)、struct(结构)。
代码:
1: string s1 = "已经习惯了回车和换行一次搞定
,敲一个回车键,即是回";
2:
3: Console.WriteLine(s1);
4: s1 = "已经习惯了回车和换行一次搞定,敲一个回车键,即是回";
5: Console.WriteLine(s1);
6: s1 = "已经习惯了回车和换行一次搞定
,敲一个回车键,即是回";
7: Console.WriteLine(s1);
8:
9: Console.ReadLine();
结果
回车、换行的区别
他们间的区别其实是个回车换行的问题
先来段历史
回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。
符号 ASCII码 意义
10 换行
13 回车CR
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
在Windows中:
'' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;
'
' 换行,换到当前位置的下一行,而不会回到行首;
Unix系统里,每行结尾只有“<换行>”,即"
";Windows系统里面,每行结尾是“<回车><换行>”,即“
”;Mac系统里,每行结尾是“<回车>”,即"";。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
例:
$ echo -en '12
3456
78
' > tmp.txt
分别在Windws和Linux中查看此文件可知:
Linux中遇到换行符("
")会进行回车+换行的操作,回车符反而只会作为控制字符("^M")显示,不发生回车的操作。而windows中要回车符+换行符("
")才会回车+换行,缺少一个控制符或者顺序不对都不能正确的另起一行。
本质的分析,请参考 C++中回车换行(
)和换行()的区别
注意点:
在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定"
"又要判定"
"。
写程序时可能得到一行,将其进行trim掉'',这样能得到你所需要的string了。
不论在什么语言里 \r 与\n分别是两个控制符
\r 指的是ascii码表中的13号,表示光标移向最左侧
\n指的是ascii码表中的10号,表示光标移向下一行
所以在windows \r\n表示一个换行符,
在windows中,一个回车输入的是两个符号。即\r\n
在unix,liunx中,回车是\n。这点与操作系统的定义有关。
如果你使用uedit等高级文本编辑软件的话,在保存的时候会问你使用哪种格式,其实就是决定换行符是用\r\n还是只用\n。
\r表示回车,\n表示换行,我们按回车按钮的时候,系统自动产生回车和换行两个字符:
回车仅仅是表示完成,把光标回到行首,
换行仅仅是换行,不表示完成,也不把光标放到行首。
示例:(下面用I表示光标)
1——
输出abcdef后:
abcdefI
2——
输出回车后:
Iabcdef
2——‘
如果是输出换行:
abcdef
I
3——
输出回车和换行:
abcdef
I
可用C语言来测试回车与换行的区别:假设当前光标的位置是5行10列,输出回车后,光标位置变为5行1列,如果输出的是换行则是6行10列,如果输出回车和换行则是6行1列。
如果你要想输出\r或\n这样的内容,你需要使用这样的方法:
Console.Write("\\r\\n");
或
Console.Write(@"\r\n");
输入回车后,产生的两个字符回车和换行
根据ASCII码表表示 \r是回车 \n是换行
实际的程序执行效果, 例如
aaa\rbbb 则结果显示为bbb,aaa被覆盖;
ccc\nddd则结果显示为aaa换行ddd;
实验结果表明:\r只是将光标移到前面,后面数据会覆盖前面数据,而\n表示换行。
\n是换行的,\r就相当于是回车