Conversion de chaînes
Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 71 sur 75.
Pour convertir un type numérique en une 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, y compris 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 nommée number en une String.
Pour convertir une chaîne de caractères en un 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 de caractères number_str en un i32 en utilisant la méthode parse(). La méthode unwrap() est utilisée pour extraire la valeur du Result, en supposant que la conversion soit réussie.
Si la conversion échoue, le programme va paniquer (échouer).
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 de caractères float_str en un f64.
Défi
FacileCréez une fonction nommée convert_and_print qui prend trois arguments :
- Une tranche de chaîne (string slice)
s: &str— il s'agit d'un nombre écrit sous forme de texte (par exemple"123.67"). Il n'est utilisé que lorsqueto_stringestfalse. - Un flottant
n: f64— un nombre à virgule flottante. Il n'est utilisé que lorsqueto_stringesttrue. - Un booléen
to_string: bool— détermine quelle opération effectuer.
La fonction doit effectuer les opérations suivantes :
- Si
to_stringesttrue: convertisseznen chaîne de caractères à l'aide de.to_string(), puis comptez le nombre de chiffres qu'elle contient (ne comptez pas le point.ni le signe moins-). Imprimez au format :Number: [string], Digits: [num of digits]
Par exemple, sin = -321.198623, sa forme textuelle est"-321.198623", qui possède 9 chiffres (sans compter-et.).
Astuce : convertisseznen chaîne, puis utilisez.len()sur celle-ci et soustrayez 1 pour chaque.ou-qu'elle contient. - Si
to_stringestfalse: analysez la chaînesen tant quef64à l'aide de.parse(), puis convertissez-la (cast) eni32(ce qui supprime la partie décimale). Imprimez au format :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.
Aide-mémoire
Pour convertir un type numérique en chaîne de caractères, utilisez la méthode to_string() :
let number = 42;
let number_str = number.to_string();Pour convertir une chaîne de caractères en un type numérique, utilisez la méthode parse() :
let number_str = "123";
let number: i32 = number_str.parse().unwrap();La méthode parse() fonctionne avec différents types numériques :
let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();La méthode unwrap() extrait la valeur du Result. Si la conversion échoue, le programme s'arrêtera avec un message d'erreur (panic).
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();
// Appeler convert_and_print avec to_string = false
// Appeler 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 Fundamentals
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 - Format