在Windows上,换行符应该是CR+LF,而在Unix上,它只是LF。那么当我使用像Console.Write("line1\nline2");这样的东西时,为什么它会“正常”工作并给我给予两行呢?我希望这个\n不工作,只有\r\n的组合才能工作。
CR+LF
LF
Console.Write("line1\nline2");
\n
\r\n
drkbr07n1#
'\n'是换行符。传统上,它会导致打印机将纸张向上卷起一行。'\r'是回车字符,传统上会导致打印头移动到纸张的最左边。在以这种方式解释字符的打印机和控制台上,line1\nline2的输出将是
'\n'
'\r'
line1\nline2
line1 line2
许多控制台(和编辑器)会将'\n'解释为您想要开始一个新行 * 并将光标定位在新行的开头。这就是你在这里看到的。您应该使用Environment.NewLine,而不是硬编码任何特定的常量。
eaf3rand2#
这只是底层Windows控制台的标准行为。如果您将0x0A输出到控制台,原生C应用程序将执行完全相同的操作。当然,您应该为新行使用Environment.NewLine。Environment.NewLine在Windows上解析为\r\n,在类Unix系统上解析为\n。
0x0A
Environment.NewLine
s6fujrry3#
我迟到了很多年。然而,https://en.wikipedia.org/wiki/Newline很好地解释了NEWLINE转义序列在编程语言和文本/二进制输出的上下文中是如何工作的。它归结为-大多数编程语言在编写文本时将“\n”转换为本地平台的NEWLINE序列。并且,在阅读文本时将本机平台的NEWLINE序列翻译为“\n”。
pbgvytdp4#
文件编码!= Console解释。换句话说,虽然CR + LF的“Windows标准”存在于文件中,但只有LF或\n才能在控制台窗口中产生适当的回车和新行解释。
Console
CR
eivgtgni5#
根据我的经验,当你用WriteLine()输出到控制台时,它接受\n转义字符。当你使用StreamWriter并调用WriteLine()时,它会让你输入\r\n移动到新的一行。我假定控制台已编程为接受\n不带回车符的转义字符\r。
km0tfn4u6#
\n是换行符。在 *nix和Windows系统上,它应该创建2行。\r是回车符,它将书写工具移动到行首。大多数现代控制台/编辑器都具有足够的弹性,可以将\n解释为\r\n
9w11ddsr7#
对于那些寻找NodeJS解决方案的人,你可以使用:用途:import { EOL } from "os";或:const { EOL } = require("os");EOL的值为:
import { EOL } from "os";
const { EOL } = require("os");
7条答案
按热度按时间drkbr07n1#
'\n'
是换行符。传统上,它会导致打印机将纸张向上卷起一行。'\r'
是回车字符,传统上会导致打印头移动到纸张的最左边。在以这种方式解释字符的打印机和控制台上,
line1\nline2
的输出将是许多控制台(和编辑器)会将'\n'解释为您想要开始一个新行 * 并将光标定位在新行的开头。这就是你在这里看到的。
您应该使用Environment.NewLine,而不是硬编码任何特定的常量。
eaf3rand2#
这只是底层Windows控制台的标准行为。如果您将
0x0A
输出到控制台,原生C应用程序将执行完全相同的操作。当然,您应该为新行使用
Environment.NewLine
。Environment.NewLine
在Windows上解析为\r\n
,在类Unix系统上解析为\n
。s6fujrry3#
我迟到了很多年。然而,https://en.wikipedia.org/wiki/Newline很好地解释了NEWLINE转义序列在编程语言和文本/二进制输出的上下文中是如何工作的。
它归结为-大多数编程语言在编写文本时将“\n”转换为本地平台的NEWLINE序列。并且,在阅读文本时将本机平台的NEWLINE序列翻译为“\n”。
pbgvytdp4#
文件编码!=
Console
解释。换句话说,虽然
CR
+LF
的“Windows标准”存在于文件中,但只有LF
或\n
才能在控制台窗口中产生适当的回车和新行解释。eivgtgni5#
根据我的经验,当你用WriteLine()输出到控制台时,它接受\n转义字符。当你使用StreamWriter并调用WriteLine()时,它会让你输入\r\n移动到新的一行。我假定控制台已编程为接受\n不带回车符的转义字符\r。
km0tfn4u6#
\n是换行符。在 *nix和Windows系统上,它应该创建2行。\r是回车符,它将书写工具移动到行首。
大多数现代控制台/编辑器都具有足够的弹性,可以将\n解释为\r\n
9w11ddsr7#
对于那些寻找NodeJS解决方案的人,你可以使用:用途:
import { EOL } from "os";
或:
const { EOL } = require("os");
EOL的值为:
\n
\r\n