在许多编程语言中,操作字符串是编写应用程序的一个重要方面。以性能和安全性而闻名的 Rust 编程语言也不例外。本文深入探讨了 Rust 中的字符串,包括可以简化您的编码体验的特殊符号和“技巧”。
理解 Rust 中的基本字符串
在最基本的层面上,Rust 中的字符串表示为编码为 UTF-8 字节流的 Unicode 标量值序列。字符串是使用双引号创建的""。
let s = "Hello, World!"; |
在此代码片段中,s是一个包含文本“Hello, World!”的字符串。
字符串文字和字符串切片
在 Rust 中,字符串文字是一个切片 (&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 is a byte array: [116, 101, 115, 116] |
原始字节字符串
原始字节字符串是原始字符串和字节字符串的组合。这种类型的字符串对于包含可能不是有效 UTF-8 的字节序列非常有用。
原始字节字符串是通过在字符串文字前添加前缀“br” 来创建的。
let raw_bs = br"\xFF"; // raw_bs is a byte array: [92, 120, 70, 70] |
在原始字符串中转义
如果你需要在一个原始字符串中包含引号,你可以通过在字符串的两边添加额外的符号来实现。
let s = r#"This string contains "quotes"."#; |
多行原始字符串
原始字符串可以是多行的。字符串的内容从不只包含# 的第一行开始。
let s = r####" |
统一码Unicode 字符串
Rust 中的字符串文字还可以包含任何有效的 Unicode 字符。
let s = "Hello, 世界!"; |
Escapes转义字符
常规(非原始)字符串文字支持多种转义序列:
\\ 反斜杠 |
还有 Unicode 转义:
- \u{7FFF} Unicode 字符(可变长度,最多 6 位数字)
- \u{1F600}统一表情符号
结论
总之,Rust 提供了强大而灵活的工具来处理字符串。从原始字符串和字节字符串到 Unicode 和转义序列,