Creare slice di stringhe
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 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 quando devi accedere agli elementi di una raccolta tramite indice o specificarne la lunghezza. Quando analizzi i valori degli indici dall’input, userai .parse::<usize>() per convertirli nel tipo corretto.
Sfida
FacileRiceverai due input. Il primo input è una frase completa e il secondo input è composto da due numeri separati da uno spazio, che rappresentano gli indici iniziale e finale per creare una fetta. Crea una String a partire dal primo input, quindi crea una fetta di stringa usando l’intervallo specificato dai due indici. Stampa la stringa originale sulla prima riga e la fetta 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 fetta di stringa usando la sintassi dell’intervallo
&string[start..end] - Stampa la stringa originale
- Stampa la fetta 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 fetta 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 porzione di stringa
// Stampa la stringa originale e la porzione
}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'Cicli come espressioniRipasso - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi delle structStruct mutabiliStruct come parametri di funzioneStruct tuplaRiepilogo - Creare una struct Book2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreIterare su un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker dei punteggi di base5Coppie chiave-valore con mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriScorrere una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: inventario semplice degli articoli
Configurazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere tutto insieme3Lista di attività da riga di comando
Configurazione 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 stringhe e altro
String vs. &strCreare slice di stringheSlice come parametri di funzioneAltre sliceRiepilogo - Trovare la prima parolaEsercitati da solo: Compilatore Rust online