不可变字符串:&str
&str 是一个不可变的字符串切片。它通常用于引用字符串字面量和其他字符串数据。
fn main() {
// 字符串字面量是不可变的 str
let greeting: &str = "Hello, Rust!";
// 使用 String::from 创建一个可变的 String
let name = String::from("Alice");
// 合并字符串切片和 String
let message = greeting.to_string() + " " + name.as_str();
println!("{}", message);
}
可变字符串:String
String 是一个可变的、堆分配的字符串类型。它允许动态地增加或减少字符串的大小。
fn main() {
// 创建一个空的 String
let mut my_string = String::new();
// 使用 push_str 和 push 方法追加字符串
my_string.push_str("Hello, ");
my_string.push_str("Rust!");
// 使用 format! 宏构建字符串
let name = "Bob";
let greeting = format!("{} {}!", my_string, name);
println!("{}", greeting);
}
Rust 中的字符串是UTF-8编码的,这意味着它们可以包含任何Unicode字符。
字符串切片和索引
可以使用切片语法获取字符串的一部分:
fn main() {
let full_string = "Hello, Rust!";
// 字符串切片
let slice = &full_string[0..5]; // "Hello"
println!("{}", slice);
}
请注意,Rust 的字符串是Unicode的,因此直接通过索引获取字符并不总是可行的,因为一个字符可能占用多个字节。要遍历字符串的字符,可以使用字符迭代器:
fn main() {
let full_string = "Hello, Rust!";
for c in full_string.chars() {
println!("{}", c);
}
}
这是一些关于Rust字符串基础的简要介绍。Rust的字符串处理还涉及到更多的概念,如字符串切片、编码处理等。
转载请注明出处:http://www.zyzy.cn/article/detail/6800/Rust