在 C# 中,转义(Escaping)是指在字符串中插入具有特殊意义的字符,如换行符、引号、反斜杠等。为了确保这些字符在字符串中正确处理,C# 使用反斜杠 (\) 作为转义符。
常见的 C# 转义字符:
在 C# 中,有一些字符需要通过反斜杠来进行转义。这些转义字符通常用于插入特殊字符(如换行符、制表符等),或表示引号和反斜杠本身。
转义字符 描述
\\ 反斜杠 (\)
\' 单引号 (')
\" 双引号 (")
\n 换行符(newline)
\r 回车符(carriage return)
\t 制表符(tab)
\b 退格符(backspace)
\f 换页符(form feed)
\uXXXX Unicode 字符(其中 XXXX 是 4 位十六进制值)
示例:C# 字符串转义
1. 转义双引号和单引号
在字符串中,如果需要包含引号,可以使用反斜杠来转义。
csharp
using System;
class Program
{
static void Main()
{
// 使用反斜杠转义双引号
string message = "Hello, \"World\"!";
Console.WriteLine(message);
// 使用反斜杠转义单引号
string quote = "It's a beautiful day!";
Console.WriteLine(quote);
}
}
输出:
rust
Hello, "World"!
It's a beautiful day!
2. 换行符、制表符等控制字符
控制字符(如换行符、制表符)在字符串中插入时也需要转义。
csharp
using System;
class Program
{
static void Main()
{
// 换行符和制表符
string text = "Hello,\n\tThis is a test with a new line and tab.";
Console.WriteLine(text);
}
}
输出:
pgsql
Hello,
This is a test with a new line and tab.
3. 转义反斜杠
反斜杠本身也需要转义。
csharp
using System;
class Program
{
static void Main()
{
// 转义反斜杠
string path = "C:\\Users\\Public\\Documents";
Console.WriteLine(path);
}
}
输出:
vbnet
C:\Users\Public\Documents
4. Unicode 转义
在 C# 中,你可以使用 \u 后跟 4 位十六进制数来表示 Unicode 字符。
csharp
using System;
class Program
{
static void Main()
{
// Unicode 转义
string unicodeChar = "\u263A"; // Unicode 表示一个笑脸字符
Console.WriteLine(unicodeChar);
}
}
输出:
☺
5. 原始字符串字面量(Verbatim String Literals)
C# 还支持 原始字符串字面量(Verbatim String Literals),它允许你在字符串中包含反斜杠,而无需转义。这对于路径或包含换行符的字符串特别有用。
在原始字符串字面量中,字符串前面加上 @ 符号,不需要转义反斜杠和换行符。
csharp
using System;
class Program
{
static void Main()
{
// 原始字符串字面量,不需要转义反斜杠
string path = @"C:\Users\Public\Documents";
Console.WriteLine(path);
// 可以包含换行符和制表符
string multilineText = @"Hello,
This is a multiline string
with no need for escape sequences.";
Console.WriteLine(multilineText);
}
}
输出:
pgsql
C:\Users\Public\Documents
Hello,
This is a multiline string
with no need for escape sequences.
总结:
转义字符:在 C# 字符串中,某些字符(如引号、反斜杠、换行符等)具有特殊意义,可以通过反斜杠 (\) 进行转义。
Unicode 转义:可以使用 \u 后跟四位十六进制数字来表示 Unicode 字符。
原始字符串字面量:通过 @ 符号,可以在字符串中包含换行符和反斜杠,而不需要进行转义。