Rust 中的各種字符串
在許多編程語言中,操作字符串是編寫應用程序的一個關鍵方面。以性能和安全性著稱的 Rust 編程語言也不例外。本文深入探討了 Rust 中的字符串,包括可以簡化編碼體驗的特殊符號和 “技巧”。
Rust 中的基本字符串
在最基本的層面上,Rust 中的字符串被表示爲編碼爲 UTF-8 的 Unicode 序列。字符串使用雙引號 "" 創建。
let s = "Hello, World!";
在這個代碼片段中,s 是一個包含文本 “Hello, World!” 的字符串。
在 Rust 中,字符串字面值是一個 slice (&str),它指向程序二進制輸出的特定部分——該部分是隻讀的,因此是不可變的。這也是爲什麼字符串字面量有時被稱爲 “靜態字符串”。
let s: &'static str = "Hello, World!";
這裏,s 是一個字符串切片,指向字符串字面量 “Hello, World!”。
原始字符串
在 Rust 中,字符串字面值前面的 r 表示原始字符串。原始字符串忽略所有轉義字符並按原樣打印字符串,當你希望避免在字符串中轉義反斜槓時,這很有幫助。例如,用原始字符串表示正則表達式或文件路徑。
let s = r"C:\Users\YourUser\Documents";
字節串
Rust 也有字節串的概念。它們類似於文本字符串,但它們是由字節而不是字符構成的。可以通過在字符串字面值前加上 b 來創建字節字符串。
let bs: &[u8; 4] = b"test"; // bs 是一個字節數組: [116, 101, 115, 116]
原始字節串是原始字符串和字節串的組合。這種類型的字符串對於包含可能不是有效 UTF-8 的字節序列很有用。原始字節串是通過在字符串字面值前加上 br 來創建的。
let raw_bs = br"\xFF"; // raw_bs 是一個字節數組: [92, 120, 70, 70]
原始字符串轉義
如果需要在原始字符串中包含引號,可以通過在字符串的兩邊添加額外的 #符號來實現。
let s = r#"This string contains "quotes"."#;
多行原始字符串
原始字符串可以是多行。字符串的內容從不包含 #的第一行開始。
let s = r####"
This string contains "quotes".
It also spans multiple lines.
"####;
字符轉義
常規 (非原始) 字符串字面量支持幾種轉義:
-
\ 反斜槓
-
" 雙引號
-
\n 換行符
-
\r 回車
-
\t Tab
-
\0 Null
也有 Unicode 轉義:
-
\u{7FFF} Unicode 字符 (可變長度,最多 6 位)
-
\u{1F600} Unicode 表情符號
總結
總之,Rust 爲處理字符串提供了強大而靈活的工具。包括原始字符串和字節串到 Unicode 和字符轉義。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/4Ud9QwTy6MosD0_uglwPIA