Conversion de chaînes
Fait partie de la section Fondamentaux du Journey Rust de Coddy. Leçon 71 sur 75.
Pour convertir un type numérique en chaîne de caractères, vous pouvez utiliser la méthode to_string(). Cette méthode est disponible pour la plupart des types de données, notamment les entiers et les nombres à virgule flottante.
Par exemple :
let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);Dans cet exemple, nous convertissons une variable i32 number en String.
Pour convertir une chaîne en type numérique, vous pouvez utiliser la méthode parse(). Cette méthode renvoie un résultat qui contient soit le nombre analysé, soit une erreur si la conversion échoue.
Par exemple :
let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);Dans cet exemple, nous convertissons une chaîne number_str en i32 à l’aide de la méthode parse(). La méthode unwrap() est utilisée pour extraire la valeur de Result, en supposant que la conversion réussit.
Si la conversion échoue, le programme paniquera (échouera).
Vous pouvez également utiliser parse() avec différents types numériques :
let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);Dans ce cas, nous convertissons une chaîne float_str en f64.
Défi
FacileCréez une fonction nommée convert_and_print qui accepte trois arguments :
- Une tranche de chaîne
s: &str. Il s’agit d’un nombre écrit sous forme de texte (par ex."123.67"). Elle est utilisée uniquement lorsqueto_stringvautfalse. - Un flottant
n: f64: un nombre à virgule flottante. Il est utilisé uniquement lorsqueto_stringvauttrue. - Un booléen
to_string: bool: détermine quelle opération effectuer.
La fonction doit effectuer les opérations suivantes :
- Si
to_stringvauttrue: convertisseznen chaîne à l’aide de.to_string(), puis comptez le nombre de caractères numériques qu’elle contient (ne comptez pas le point.ni le signe moins-). Affichez le résultat au format suivant :Number: [string], Digits: [num of digits]
Par exemple, sin = -321.198623, sa forme textuelle est"-321.198623", qui contient 9 caractères numériques (sans compter-et.).
Astuce : convertisseznen chaîne, puis utilisez.len()sur celle-ci et soustrayez 1 pour chaque.ou-qu’elle contient. - Si
to_stringvautfalse: analysez la chaînescomme unf64à l’aide de.parse(), puis convertissez-la eni32(ce qui supprime la partie décimale). Affichez le résultat au format suivant :String as number: [number]
Par exemple, sis = "123.67231", la sortie estString as number: 123.
Appelez convert_and_print deux fois :
- Premièrement, avec
to_stringdéfini surfalse. Cela utilise la chaîneset ignoren. - Deuxièmement, avec
to_stringdéfini surtrue. Cela utilise le nombrenet ignores.
Essayez vous-même
use std::io;
fn convert_and_print(s: &str, n: f64, to_string: bool) {
// Écrivez votre code ici
}
fn main() {
let mut input_number_str = String::new();
let mut input_n = String::new();
io::stdin().read_line(&mut input_number_str).unwrap();
io::stdin().read_line(&mut input_n).unwrap();
let n: f64 = input_n.trim().parse().unwrap();
let number_str = input_number_str.trim();
// Appelez convert_and_print avec to_string = false
// Appelez convert_and_print avec to_string = true
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Afficher dans la consoleLire la saisie utilisateurRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 33Variables - Partie 2
Déclaration de typeConventions de nommageInférence de typeRécapitulatif - Initialiser des variablesConversion de type9Boucles
Boucle For sur une sérieBoucle WhileBreakContinueBoucles imbriquéesÉtiquettes de boucleBoucle infinieRécapitulatif - Entrée dynamique12Bases des tableaux
Déclaration de tableauxTableau comme paramètreAccès aux élémentsModification de tableauxRécapitulatif - Affichage formaté d'un tableau15Opérations sur les chaînes
Méthodes de chaînesMacro format!Conversion de chaînesRécapitulatif - FormatEntraînez-vous par vous-même : Compilateur Rust en ligne