Creare slice di stringa
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 55 di 66.
Ora che hai capito la differenza tra String e &str, impariamo a creare sezioni di stringa a partire da stringhe esistenti. Ci sono due modi principali per creare un &str da una String.
Il modo più semplice è usare l’operatore di riferimento & con la tua String. Questo crea una slice che fa riferimento all’intera stringa:
let my_string = String::from("Hello World");
let slice: &str = &my_string; // Questo crea una slice dell'intera stringaPuoi anche creare slice di parti specifiche di una stringa usando la sintassi degli intervalli. Il formato è &string[start..end], dove start è l'indice iniziale e end è l'indice successivo all'ultimo carattere che vuoi includere:
let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // Questo ci dà "Hello"
let second_word = &my_string[6..11]; // Questo ci dà "World"Gli indici usati nella sintassi degli intervalli sono di tipo usize, il tipo intero senza segno di Rust usato per rappresentare dimensioni e indici. È il tipo standard da usare ogni volta che devi indicizzare una raccolta o specificare una lunghezza. Quando analizzi i valori degli indici ricevuti in input, userai .parse::<usize>() per convertirli nel tipo corretto.
Sfida
FacileRiceverai due input. Il primo input è una frase completa, mentre il secondo input è composto da due numeri separati da uno spazio, che rappresentano gli indici iniziale e finale per creare una porzione. Crea una String a partire dal primo input, poi crea una porzione di stringa usando l'intervallo specificato dai due indici. Stampa la stringa originale sulla prima riga e la porzione estratta sulla seconda riga.
Requisiti:
- Leggi il primo input (la frase completa) e rimuovi gli spazi bianchi
- Crea una
Stringa partire da questo input - Leggi il secondo input (due numeri separati da uno spazio) e rimuovi gli spazi bianchi
- Dividi il secondo input in corrispondenza dello spazio per ottenere gli indici iniziale e finale
- Analizza entrambi gli indici come
usize - Crea una porzione di stringa usando la sintassi dell'intervallo
&string[start..end] - Stampa la stringa originale
- Stampa la porzione estratta
Input:
- Prima riga: una frase (ad es.,
Hello World) - Seconda riga: due numeri separati da uno spazio (ad es.,
0 5)
Output:
- Prima riga: la stringa originale
- Seconda riga: la porzione estratta
Provalo tu
use std::io;
fn main() {
// Leggi il primo input (la frase completa)
let mut sentence = String::new();
io::stdin().read_line(&mut sentence).expect("Failed to read line");
let sentence = sentence.trim();
// Leggi il secondo input (due numeri separati da uno spazio)
let mut indices = String::new();
io::stdin().read_line(&mut indices).expect("Failed to read line");
let indices = indices.trim();
// TODO: Scrivi il tuo codice qui sotto
// Analizza gli indici e crea la slice della stringa
// Stampa la stringa originale e la slice
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
L’espressione 'match'Corrispondenza di più valoriCorrispondenza di intervalliL’espressione 'if let'I cicli come espressioniRiepilogo - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi di una structStruct mutabiliLe struct come parametri di funzioneStruct tuplaRiepilogo - Crea una struct Book2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreScorrere un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker di punteggi di base5Coppie chiave-valore con le mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriIterare su una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: semplice inventario di articoli
Impostazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere insieme il tutto3Lista di cose da fare da riga di comando
Impostazione del progettoAggiungere un'attivitàVisualizzare tutte le attivitàRimuovere un'attivitàCodice finale6Gestire l’assenza con 'Option'
Che cos’è un 'Option'?Usare 'match' con 'Option'is_some() e is_none()Estrarre il valore da un 'Option'Il metodo expectFornire un valore predefinito: unwrap_orRiepilogo - Trovare un elemento9Slice di stringa e altro
String vs. &strCreare slice di stringaSlice come parametri di funzioneAltre sliceRiepilogo - Trovare la prima parolaEsercitati da solo: Compilatore Rust online