CodeGym /課程 /C# SELF /跳脫字元、特殊符號跟字串插值

跳脫字元、特殊符號跟字串插值

C# SELF
等級 9, 課堂 1
開放

1. 主要特殊符號跟跳脫字元

寫程式時,字串不只會有字母,還會有一些特殊符號:像是引號、換行、tab,有時還會有像 \n 跟 \t 這種標記。但如果你想在字串裡寫 Привет, "user"!,編譯器馬上會問:「欸,字串裡的引號是怎樣,是不是寫錯了?」這時候就要用跳脫字元啦。

在 C# 裡,跳脫字元就是讓你「特別標記」某些字元在字串裡的意思。這會用到反斜線 \(也就是 backslash)。

經典特殊符號

序列 說明 展示
\n 換行 按下 Enter
\t Tab 縮排 Tab
\\ 真的「反斜線」 \
\" 字串裡的引號 "
\' 單引號(字串裡很少用到) '
\r 回車(舊式換行,很少用)
\0 Null 字元 (看不到)
\b Backspace(刪掉前一個字元——在 console 不一定有用)

怎麼運作

來寫幾行有跳脫字元的字串,直接看效果。


Console.WriteLine("Привет, \"Пользователь\"!");
// 輸出: Привет, "Пользователь"!

Console.WriteLine("C:\\Program Files\\MyApp");
// 輸出: C:\Program Files\MyApp

Console.WriteLine("Строка 1\nСтрока 2");
// 輸出:
// Строка 1
// Строка 2

Console.WriteLine("Я\tлюблю\tтабуляцию!");
// 輸出:
// Я      люблю   табуляцию!

就這樣,一個小小的反斜線 (\),你就能把幾乎所有特殊符號「塞」進字串,不會讓編譯器或隊友崩潰。

2. 一般字串跟逐字字串 (@-字串)

那如果你要一直寫反斜線——像是檔案路徑?每次都打 \\,真的很煩。還好 C# 有逐字字串(verbatim strings),開頭加個 @ 就好。

長怎樣?


string path = "C:\\Users\\Ann\\Documents\\";
string verbatimPath = @"C:\Users\Ann\Documents\";

逐字字串不用跳脫,反斜線就是一般字元。但有個小細節:如果要在這種字串裡放引號,要打兩次!


string quote = @"Это дословная строка с кавычками: ""Hello""!";
Console.WriteLine(quote);
// 輸出: Это дословная строка с кавычками: "Hello"!

視覺比較

風格 語法 怎麼運作
一般 "C:\\Folder\\File.txt" 每個 \ 都要打兩次
逐字 (@) @"C:\Folder\File.txt" 所有 \ 都是一般字元
逐字+引號 @"Text с ""кавычками"" внутри" 引號要打兩次

專業小撇步:檔案路徑、多行文字、regex 模板都用逐字字串超方便。

3. 換行跟多行字串

常常要寫多行訊息或 ASCII 藝術。最直接的方式就是在一般字串裡用 \n,或用逐字字串。逐字字串會保留所有字元,包括換行。舉例:


Console.WriteLine("Первая строка\nВторая строка");

Console.WriteLine(@"Многострочная строка.
В которой не нужны экранированные переносы
И даже табуляции    работают как есть.");

C# 最近還有 raw string literals(三個引號),也能寫多行字串,而且不用重複引號。例子:


string json = """
    {
        "name": "Alice",
        "age": 30,
        "skills": ["C#", "SQL", "Azure"]
    }
    """;

Console.WriteLine(json);

4. Unicode——C# 怎麼存全世界的字元

現在大家不只用拉丁字母,還有西里爾字母、漢字、數學符號、emoji。這都要靠字元編碼系統——Unicode。

什麼是 Unicode?

Unicode 是國際標準,給每個字元一個獨一無二的編號(code point),不管什麼語言、平台都一樣。這樣你在 C# 裡可以同時用西里爾文、英文、中文、還有各種特殊符號。

不同語言的字串範例:


Console.WriteLine("Hello, мир! 你好! مرحبا!");

字串裡的 Unicode 符號

你可以直接寫任何你編碼支援的字元,或用 跳脫序列 \uXXXX,XXXX 是 4 位十六進位碼。


Console.WriteLine("Символ: \u263A"); // 會顯示 ☺

如果字元編號超過 65535(像很多 emoji),要用 \UXXXXXXXX(8 位數):


Console.WriteLine("Смайлик: \U0001F60A"); // 會顯示 😊

這有什麼好處?

  • 你可以存跟處理任何文字。
  • 不用怕混用語言或特殊符號——C# 跟 .NET 天生支援 Unicode。
  • 做國際化或遇到奇怪字母時超重要。

5. 字串裡的 emoji 跟特殊符號

現代字串不只字母,還有 emoji!比如你想傳個可愛訊息給用戶,加個笑臉。

怎麼加 emoji?

直接貼 emoji 到字串:
複製你要的 emoji(像 😊, 🚀, 🐱),直接貼到字串裡就好:


Console.WriteLine("Привет! 😊");

用 Unicode 編號:
大部分 emoji 用 \U 加 8 位數字。


Console.WriteLine("Вот котик: \U0001F431"); // 🐱

emoji 的編號可以去 Unicode 線上表查。

emoji 的小細節

emoji 在字串裡可能會佔 2 個以上字元(因為它的 Unicode 編號超過 16 位元)。

有些操作(像算字串長度)會有「驚喜」:


string s = "😊";
Console.WriteLine(s.Length); // 可能會顯示 2,不是 1!

這是因為這個 emoji 的 codepoint 會用兩個字元編碼。

在 console 或網頁上顯示,大部分 emoji 都會正常,只要你的系統跟字型有支援。

emoji 字串輸出範例


Console.WriteLine("Поздравляем с успехом! 🎉 Вы молодец! 🚀");

6. 常見陷阱跟錯誤

新手常常搞混引號跟反斜線的跳脫。如果忘了跳脫,編譯器會以為你字串提早結束。

錯誤:


Console.WriteLine("Он сказал: "Привет!""); // 錯誤!編譯器崩潰。

正確:


Console.WriteLine("Он сказал: \"Привет!\"");

或者你要輸出檔案路徑,有時會這樣寫:


Console.WriteLine("C:\Temp\file.txt"); // 會錯誤或出現怪結果,比如: C:  emp ile.txt

因為 \t 跟 \f 是特殊符號(tab 跟換頁)。 修正有兩種主要方式:


Console.WriteLine("C:\\Temp\\file.txt");    // 兩個反斜線
Console.WriteLine(@"C:\Temp\file.txt");     // 逐字字串

要記得:用逐字字串時,如果要引號,要打兩次:


Console.WriteLine(@"Файл ""config.txt"" не найден."); // Файл "config.txt" не найден.
2
任務
C# SELF, 等級 9, 課堂 1
上鎖
使用特殊字元和逐字字串
使用特殊字元和逐字字串
2
任務
C# SELF, 等級 9, 課堂 1
上鎖
多行文字與 Unicode 符號
多行文字與 Unicode 符號
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION