繁体   English   中英

对C#字符的特殊含义感到困惑

[英]Confused about C# character special meanings

我是C#编程的新手,我不了解字符转义的工作原理。 我尝试了很多,但是只有'\\ t'可以正常工作。 我的代码的示例:

        textBox1.Text = "asd";
        textBox1.Text = textBox1.Text + '\n';
        textBox1.Text = textBox1.Text + "asd";

启用了MultiLine,但我的输出只是“ asdasd”而没有中断。 我希望你们中的一些人知道答案是什么。

Windows控件中的换行符需要"\\r\\n" ,因为这是Windows的常规换行符组合。 (换行符是程序员们的祸根。不同的操作系统使用不同的字符序列作为“典型”换行符。)

"\\r\\n"是两个字符: \\r用于回车(U + 000D)和\\n用于换行(U + 000A)。 不过,您不需要在以下三个语句中这样做:

textBox1.Text = "First line\r\nSecond line";

现在,我故意在其中使用\\r\\n而不是Environment.NewLine ,因为如果使用System.Windows.Forms ,则这些控件将是面向Windows的控件。 我不清楚在正常的换行符不同的Mac或Linux上Windows Forms的实现将如何执行。 (为简单起见,我的猜测是实用的实现会破坏\\r\\n\\r\\n ,就像TextReader一样。)

有时-例如,如果您要在同一台计算机上编写文本文件以供使用-最好使用Environment.NewLine

有时-例如当您实现要求特定的换行格式的HTTP之类的网络协议时-最好对其进行明确说明。

有时-例如在这种情况下-尚不清楚。 但是,始终值得考虑。

有关C#中转义序列的完整列表,您可以查看C#语言规范(总是很有趣!),也可以查看我的Strings文章 ,其中包含该信息以及更多内容。

在C#中插入换行符的最清晰的方法是:

    textBox1.Text = "asd";
    textBox1.Text = textBox1.Text + Environment.NewLine;
    textBox1.Text = textBox1.Text + "asd";

此代码段会将textBox1文本设置为“ asd ”,然后向其中添加换行符,然后在第二行中再次添加“ asd ”。

您感到困惑的特殊字符是计算机将电传打印机用于所有输出时的伪影。 电传打字机比数字显示器要早几年。

  • \\ n告诉打印机(输出)将打印头向下移动一行(新行)。
  • \\ r告诉打印机(输出)将打印头移回到行的开头(回车)。

综合起来,这导致打印头位于下一行的开始位置,准备输出到干净的纸上。

可以在Internet上轻松找到更多信息,例如Wikipedia的NewLine文章。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM