簡體   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