Menu
Coddy logo textTech

Analyse de chaînes en nombres

Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 47 sur 66.

L'une des applications concrètes les plus courantes de Result est la conversion de chaînes de caractères en nombres. En Rust, cela se fait à l'aide de la méthode .parse(), qui démontre parfaitement pourquoi Result existe - parce que l'analyse syntaxique peut échouer.

La méthode .parse() tente de convertir une chaîne de caractères en un nombre, mais toutes les chaînes ne représentent pas un nombre valide. Par exemple, "42" peut être analysé en le nombre 42, mais "hello" ne peut être converti en aucun nombre :

let valid_number = "42";
let invalid_number = "hello";

let result1: Result = valid_number.parse();
let result2: Result = invalid_number.parse();

Lorsque l'analyse réussit, .parse() renvoie Ok(number) contenant la valeur convertie. Lorsqu'elle échoue, elle renvoie Err(error) avec des informations sur la raison pour laquelle l'analyse a échoué. Cela vous oblige à gérer explicitement les deux possibilités, empêchant votre programme de planter en cas de saisie invalide.

Vous pouvez gérer le résultat de l'analyse en utilisant n'importe laquelle des techniques Result que vous avez apprises - match pour une gestion explicite, unwrap() si vous êtes certain qu'il réussira, ou l'opérateur ? pour propager les erreurs.

challenge icon

Défi

Facile

Écrivez une fonction parse_to_integer qui prend une chaîne de caractères input et renvoie la valeur entière analysée. Si la chaîne ne peut pas être analysée en un entier valide, renvoyez 0 comme valeur par défaut.

Utilisez la méthode .parse() pour convertir la chaîne en un i32, et gérez le Result de manière appropriée pour fournir une valeur de retour sûre.

Paramètres :

  • input (String) : La chaîne à analyser en un entier

Retourne : L'entier analysé en cas de succès, ou 0 si l'analyse échoue (i32)

Aide-mémoire

La méthode .parse() convertit une chaîne de caractères en un nombre et renvoie un type Result car l'analyse peut échouer :

let valid_number = "42";
let invalid_number = "hello";

let result1: Result<i32, _> = valid_number.parse();
let result2: Result<i32, _> = invalid_number.parse();

Lorsque l'analyse réussit, .parse() renvoie Ok(number). Lorsqu'elle échoue, elle renvoie Err(error).

Vous pouvez gérer les résultats de l'analyse en utilisant match, unwrap(), l'opérateur ?, ou unwrap_or() pour fournir une valeur par défaut en cas d'échec.

Essayez vous-même

fn parse_to_integer(input: String) -> i32 {
    // Écrivez le code ici
}
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