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.
"####;

字符轉義

常規 (非原始) 字符串字面量支持幾種轉義:

也有 Unicode 轉義:

總結

總之,Rust 爲處理字符串提供了強大而靈活的工具。包括原始字符串和字節串到 Unicode 和字符轉義。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/4Ud9QwTy6MosD0_uglwPIA