Créer des slices de chaînes
Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 55 sur 66.
Maintenant que vous comprenez la différence entre String et &str, apprenons comment créer des tranches de chaîne à partir de chaînes existantes. Il existe deux manières principales de créer un &str à partir d'un String.
La manière la plus simple est d'utiliser l'opérateur de référence & avec votre String. Cela crée une tranche (slice) qui référence la chaîne entière :
let my_string = String::from("Hello World");
let slice: &str = &my_string; // Cela crée une tranche de la chaîne entièreVous pouvez également créer des tranches (slices) de parties spécifiques d'une chaîne de caractères en utilisant la syntaxe de plage (range). Le format est &string[start..end], où start est l'indice de début et end est l'indice suivant le dernier caractère que vous souhaitez inclure. Ces indices sont de type usize, qui est le type d'entier non signé de Rust utilisé pour l'indexation et les tailles — il ne peut être que nul ou positif, ce qui est logique puisqu'un indice de chaîne ne peut jamais être négatif :
let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // Cela nous donne "Hello"
let second_word = &my_string[6..11]; // Cela nous donne "World"Défi
FacileVous recevrez deux entrées. La première entrée est une phrase complète, et la seconde entrée est composée de deux nombres séparés par un espace représentant les indices de début et de fin pour créer une tranche (slice). Créez un String à partir de la première entrée, puis créez une tranche de chaîne en utilisant la plage spécifiée par les deux indices. Affichez la chaîne d'origine sur la première ligne et la tranche extraite sur la deuxième ligne.
Exigences :
- Lire la première entrée (la phrase complète) et supprimer les espaces superflus (trim)
- Créer un
Stringà partir de cette entrée - Lire la seconde entrée (deux nombres séparés par un espace) et supprimer les espaces superflus (trim)
- Diviser la seconde entrée par l'espace pour obtenir les indices de début et de fin
- Convertir (parse) les deux indices en
usize - Créer une tranche de chaîne en utilisant la syntaxe de plage
&string[start..end] - Afficher la chaîne d'origine
- Afficher la tranche extraite
Entrée :
- Première ligne : Une phrase (par exemple,
Hello World) - Deuxième ligne : Deux nombres séparés par un espace (par exemple,
0 5)
Sortie :
- Première ligne : La chaîne d'origine
- Deuxième ligne : La tranche extraite
Aide-mémoire
Il existe deux manières principales de créer un &str à partir d'une String.
Utilisez l'opérateur de référence & pour créer une tranche (slice) de la chaîne entière :
let my_string = String::from("Hello World");
let slice: &str = &my_string;Utilisez la syntaxe d'intervalle &string[start..end] pour créer des tranches de parties spécifiques :
let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // "Hello"
let second_word = &my_string[6..11]; // "World"L'index start est inclusif et l'index end est exclusif (un caractère après le dernier).
Essayez vous-même
use std::io;
fn main() {
// Lire la première entrée (la phrase complète)
let mut sentence = String::new();
io::stdin().read_line(&mut sentence).expect("Failed to read line");
let sentence = sentence.trim();
// Lire la deuxième entrée (deux nombres séparés par un espace)
let mut indices = String::new();
io::stdin().read_line(&mut indices).expect("Failed to read line");
let indices = indices.trim();
// TODO: Écrivez votre code ci-dessous
// Analyser les indices et créer la tranche de chaîne (string slice)
// Afficher la chaîne originale et la tranche
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logic & Flow
1Structures de contrôle avancées
L'expression 'match'Filtrage de plusieurs valeursFiltrage d'intervallesL'expression 'if let'Les boucles en tant qu'expressionsRécapitulatif - Analyseur de commandes simple4Regrouper des données avec les structures
Qu'est-ce qu'une structure ?Aperçu des structuresAccéder aux champs d'une structureStructures mutablesLes structures comme paramètres de fonctionStructures tupleRécapitulatif - Créer une structure Book2Introduction aux vecteurs
Qu'est-ce qu'un vecteur ?Créer un vecteurAjouter des éléments avec pushAccéder aux éléments d'un vecteurItérer sur un vecteurItération mutableSupprimer des élémentsRécapitulatif - Suivi de score basique5Paires clé-valeur avec les Hash Maps
Qu'est-ce qu'une Hash Map ?Créer une Hash MapInsérer des paires clé-valeurAccéder aux valeursParcourir une Hash MapMettre à jour une valeurSupprimer une paireRécapitulatif - Compteur de mots8Projet : Inventaire d'articles simple
Configuration du projetAjouter un articleVérifier le stockVendre un articleAssembler le tout3Liste de tâches en ligne de commande
Configuration du projetAjouter une tâcheAfficher toutes les tâchesSupprimer une tâcheCode final6Gérer l'absence avec 'Option'
Qu'est-ce qu'une 'Option' ?Utiliser 'match' avec 'Option'is_some() et is_none()Déballer une 'Option'La méthode expectFournir une valeur par défaut : unwrap_orRécapitulatif - Trouver un élément9Slices de chaînes et plus encore
String vs. &strCréer des slices de chaînesLes slices comme paramètres de fonctionAutres types de slicesRécapitulatif - Trouver le premier mot