Rust 中的字符串是一系列使用 UTF-8 编码的 Unicode 字符。例如,"Rust Programming" 就是一个字符串,其中每个字符都是有效的 Unicode 字符,比如 "R"、"u"、"s"、"t"、" " 等等。
在 Rust 中创建字符串
我们可以使用 String::from() 方法创建一个带有默认值的字符串。例如:
// 使用默认值创建一个字符串
let word = String::from("Hello, World!");
在这里,我们创建了一个新的字符串,并将其赋值给变量 word,同时提供了默认值 "Hello, World!"。
注意:字符串在堆内存中分配,并且其大小是动态的(可调整大小)。因此,字符串的大小在编译时是未知的。
示例:在 Rust 中创建字符串
fn main() {
// 使用 String::from() 方法创建字符串
let word = String::from("Hello, World!");
println!("word = {}", word);
}
输出
word = Hello, World!
Rust 中的可变字符串
我们可以在将字符串赋值给变量之前,使用 mut 关键字来创建一个可变字符串。例如:
// 可变字符串
let mut word = String::from("cat");
我们可以对这个字符串进行修改。
让我们看一个示例:
fn main() {
let mut word = String::from("cat");
println!("original string = {}", word);
// 在原始字符串末尾追加一个新的字符串
word.push_str(" dog");
println!("changed string = {}", word);
}
输出
original string = cat
changed string = cat dog
在这里,我们创建了一个可变变量 word,它保存了字符串 "cat"。然后我们使用 word.push_str(" dog"); 在原始字符串的末尾追加了一个新字符串。
Rust 中的字符串切片(String Slicing)
我们可以对 Rust 中的字符串进行切片,以引用字符串的一部分。字符串切片允许我们引用字符串的一个部分(片段)。例如:
fn main() {
let word = String::from("Hello, World!");
// 对字符串进行切片
let slice = &word[0..5];
println!("string = {}", word);
println!("slice = {}", slice);
}
输出
string = Hello, World!
slice = Hello
在这里,&word[0..5] 是一种切片语法,用于从变量 word 中存储的字符串中截取从起始索引 0(包含)到结束索引 5(不包含)的部分。
切片语法中的 &(和号)表示这是一个字符串引用,而不是实际的数据。
切片也用于访问数组和向量中存储的数据的一部分。要了解 Rust 中的切片(Slice),请参阅 Rust Slice。
遍历字符串
我们可以使用字符串类型的 chars() 方法来遍历字符串。例如:
fn main() {
let str = String::from("Hello");
// 使用 chars() 方法遍历字符串中的每个字符
for char in str.chars() {
println!("{}", char);
}
}
输出
H
e
l
l
o
在这里,我们使用 chars() 方法遍历所有字符,并逐个打印它们。
使用 String::new() 创建空字符串
我们可以使用 String::new() 方法创建一个空字符串。例如:
// 创建一个空字符串
let mut word = String::new();
然后,我们可以使用 push_str() 方法向变量 word 中追加字符串:
word.push_str("Hello, World!");
在这里,我们将字符串 "Hello, World!" 追加到了空字符串变量 word 中。
示例:使用 String::new() 创建空字符串
fn main() {
// 创建一个空字符串
let mut word = String::new();
println!("original string = {}", word);
// 向 word 变量追加一个字符串
word.push_str("Hello, World!");
println!("changed string = {}", word);
}
输出
original string =
changed string = Hello, World!
在这里,我们使用 String::new() 创建了一个空字符串,并使用 push_str() 方法向原始字符串中追加了字符串 "Hello, World!"。