创建 String 切片
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 55 课,共 66 课。
现在你已经了解了 String 和 &str 的区别,接下来学习如何从现有字符串创建字符串切片。从 String 创建 &str 主要有两种方法。
最简单的方法是对你的 String 使用引用运算符 &。这会创建一个引用整个字符串的切片:
let my_string = String::from("Hello World");
let slice: &str = &my_string; // 这会创建一个包含整个字符串的切片你还可以使用范围语法,从字符串中截取特定部分。格式为 &string[start..end],其中 start 是起始索引,end 是你想包含的最后一个字符之后的位置:
let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // 这会得到 "Hello"
let second_word = &my_string[6..11]; // 这会得到 "World"范围语法中使用的索引属于 usize 类型,这是 Rust 用来表示大小和索引的无符号整数类型。每当你需要访问集合中的元素或指定长度时,都会使用这种标准类型。从输入中解析索引值时,你会使用 .parse::<usize>() 将它们转换为正确的类型。
挑战
简单你会收到两个输入。第一个输入是一整句话,第二个输入是两个用空格分隔的数字,表示创建切片的起始和结束索引。根据第一个输入创建一个 String,然后使用这两个索引指定的范围创建字符串切片。第一行输出原始字符串,第二行输出提取的切片。
要求:
- 读取第一个输入(一整句话)并去除空白
- 根据此输入创建一个
String - 读取第二个输入(两个用空格分隔的数字)并去除空白
- 按空格拆分第二个输入,获取起始和结束索引
- 将两个索引都解析为
usize - 使用范围语法
&string[start..end]创建字符串切片 - 输出原始字符串
- 输出提取的切片
输入:
- 第一行:一句话(例如,
Hello World) - 第二行:两个用空格分隔的数字(例如,
0 5)
输出:
- 第一行:原始字符串
- 第二行:提取的切片
亲手试试
use std::io;
fn main() {
// 读取第一个输入(完整的句子)
let mut sentence = String::new();
io::stdin().read_line(&mut sentence).expect("Failed to read line");
let sentence = sentence.trim();
// 读取第二个输入(两个用空格分隔的数字)
let mut indices = String::new();
io::stdin().read_line(&mut indices).expect("Failed to read line");
let indices = indices.trim();
// TODO: 在下方编写你的代码
// 解析索引并创建字符串切片
// 打印原始字符串和切片
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Rust 在线编译器