Strings in Zahlen parsen
Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 47 von 66.
Eine der häufigsten praktischen Anwendungen von Result ist das Umwandeln von Zeichenfolgen in Zahlen. In Rust geschieht dies mit der Methode .parse(), die perfekt veranschaulicht, warum es Result gibt – denn das Parsen kann fehlschlagen.
Die Methode .parse() versucht, eine Zeichenkette in eine Zahl umzuwandeln, aber nicht jede Zeichenkette stellt eine gültige Zahl dar. Zum Beispiel kann "42" in die Zahl 42 umgewandelt werden, aber "hello" lässt sich in keine Zahl umwandeln:
let valid_number = "42";
let invalid_number = "hello";
let result1: Result = valid_number.parse();
let result2: Result = invalid_number.parse();Wenn das Parsen erfolgreich ist, gibt .parse() Ok(number) zurück, das den umgewandelten Wert enthält. Wenn es fehlschlägt, gibt es Err(error) mit Informationen darüber zurück, warum das Parsen fehlgeschlagen ist. Dadurch musst du beide Möglichkeiten ausdrücklich behandeln und verhinderst, dass dein Programm bei ungültiger Eingabe abstürzt.
Du kannst das Parsergebnis mit jeder der Result-Techniken verarbeiten, die du kennengelernt hast – mit match für eine explizite Behandlung, mit unwrap(), wenn du sicher bist, dass es gelingt, oder mit dem Operator ?, um Fehler weiterzugeben.
Aufgabe
EinfachSchreibe eine Funktion parse_to_integer, die eine Zeichenkette input entgegennimmt und den geparsten ganzzahligen Wert zurückgibt. Wenn die Zeichenkette nicht in eine gültige Ganzzahl geparst werden kann, gib als Standardwert 0 zurück.
Verwende die Methode .parse(), um die Zeichenkette in ein i32 umzuwandeln, und behandle Result entsprechend, um einen sicheren Rückgabewert bereitzustellen.
Parameter:
input(String): Die Zeichenkette, die in eine Ganzzahl geparst werden soll
Rückgabewert: Die geparste Ganzzahl, wenn der Vorgang erfolgreich ist, oder 0, wenn das Parsen fehlschlägt (i32)
Probier es selbst
fn parse_to_integer(input: String) -> i32 {
// Schreibe hier Code
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen7Fehlerbehandlung mit 'Result'
Was ist ein 'Result'?'match' mit 'Result' verwendenis_ok() und is_err()Abkürzungen: unwrap und expectDer Fragezeichen-Operator '?'Strings in Zahlen parsenZusammenfassung – Sichere Divisionsfunktion2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler CodeÜbe selbstständig: Online-Rust-Compiler