Menu
Coddy logo textTech

Создание срезов строк

Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 55 из 66.

Теперь, когда вы понимаете разницу между String и &str, давайте узнаем, как создавать срезы строк из существующих строк. Существует два основных способа создания &str из String.

Самый простой способ — использовать оператор ссылки & с вашим 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Проверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow