Menu
CoddyTech

创建 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>() 将它们转换为正确的类型。

challenge icon

挑战

简单

你会收到两个输入。第一个输入是一整句话,第二个输入是两个用空格分隔的数字,表示创建切片的起始和结束索引。根据第一个输入创建一个 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: 在下方编写你的代码
    // 解析索引并创建字符串切片
    
    
    // 打印原始字符串和切片
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Rust 在线编译器