Menu
Coddy logo textTech

Criando Slices de String

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 55 de 66.

Agora que você entende a diferença entre String e &str, vamos aprender como criar fatias de string a partir de strings existentes. Existem duas maneiras principais de criar um &str a partir de uma String.

A maneira mais simples é usar o operador de referência & com sua String. Isso cria um slice que referencia a string inteira:

let my_string = String::from("Hello World");
let slice: &str = &my_string; // Isso cria um slice da string inteira

Você também pode criar fatias (slices) de partes específicas de uma string usando a sintaxe de intervalo (range). O formato é &string[start..end], onde start é o índice inicial e end é uma posição após o último caractere que você deseja incluir. Esses índices são do tipo usize, que é o tipo de número inteiro sem sinal do Rust usado para indexação e tamanhos — ele só pode ser zero ou positivo, o que faz sentido, já que um índice de string nunca pode ser negativo:

let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // Isso nos dá "Hello"
let second_word = &my_string[6..11]; // Isso nos dá "World"
challenge icon

Desafio

Fácil

Você receberá duas entradas. A primeira entrada é uma frase completa, e a segunda entrada são dois números separados por um espaço representando os índices de início e fim para criar um slice. Crie uma String a partir da primeira entrada, depois crie um slice de string usando o intervalo especificado pelos dois índices. Imprima a string original na primeira linha e o slice extraído na segunda linha.

Requisitos:

  • Leia a primeira entrada (a frase completa) e remova os espaços em branco (trim)
  • Crie uma String a partir desta entrada
  • Leia a segunda entrada (dois números separados por um espaço) e remova os espaços em branco (trim)
  • Divida a segunda entrada por espaço para obter os índices de início e fim
  • Converta (parse) ambos os índices para usize
  • Crie um slice de string usando a sintaxe de intervalo &string[start..end]
  • Imprima a string original
  • Imprima o slice extraído

Entrada:

  • Primeira linha: Uma frase (ex: Hello World)
  • Segunda linha: Dois números separados por um espaço (ex: 0 5)

Saída:

  • Primeira linha: A string original
  • Segunda linha: O slice extraído

Folha de consulta

Existem duas maneiras principais de criar um &str a partir de uma String.

Use o operador de referência & para criar um slice da string inteira:

let my_string = String::from("Hello World");
let slice: &str = &my_string;

Use a sintaxe de intervalo &string[start..end] para criar slices de partes específicas:

let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // "Hello"
let second_word = &my_string[6..11]; // "World"

O índice start é inclusivo e o índice end é exclusivo (um após o último caractere).

Experimente você mesmo

use std::io;

fn main() {
    // Lê a primeira entrada (a frase completa)
    let mut sentence = String::new();
    io::stdin().read_line(&mut sentence).expect("Failed to read line");
    let sentence = sentence.trim();
    
    // Lê a segunda entrada (dois números separados por um espaço)
    let mut indices = String::new();
    io::stdin().read_line(&mut indices).expect("Failed to read line");
    let indices = indices.trim();
    
    // TODO: Escreva seu código abaixo
    // Analise os índices e crie o slice da string
    
    
    // Imprima a string original e o slice
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow