Menu
Coddy logo textTech

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ère

Vous 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"
challenge icon

Défi

Facile

Vous 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
}
quiz iconTestez-vous

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