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. O formato é &string[start..end], onde start é o índice inicial e end é uma posição após o último caractere que você deseja incluir:

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"

Os índices usados na sintaxe de intervalo são do tipo usize, que é o tipo de número inteiro sem sinal do Rust para representar tamanhos e índices. É o tipo padrão usado sempre que você precisa indexar uma coleção ou especificar um comprimento. Ao analisar valores de índice a partir da entrada, você usará .parse::<usize>() para convertê-los para o tipo correto.

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

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
    // Analisa os índices e cria a fatia da string (string slice)
    
    
    // Imprime a string original e a fatia
}
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