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 inteiraVocê 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"Desafio
FácilVocê 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
Stringa 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
}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
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo Final6Lidando com a Ausência com 'Option'
O que é um 'Option'?Usando 'match' com 'Option'is_some() e is_none()Fazendo o unwrap de um 'Option'O método expectFornecendo um valor padrão: unwrap_orRecapitulação - Encontrar um Elemento9Slices de String e Mais
String vs. &strCriando Slices de StringSlices como Parâmetros de FunçãoOutros SlicesRecapitulação - Encontrar a Primeira Palavra