Menu
Coddy logo textTech

Strings in Zahlen parsen

Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 47 von 66.

Eine der häufigsten praxisnahen Anwendungen von Result ist das Umwandeln von Strings in Zahlen. In Rust wird dies mit der .parse()-Methode durchgeführt, die perfekt demonstriert, warum Result existiert – weil das Parsen fehlschlagen kann.

Die Methode .parse() versucht, einen String in eine Zahl umzuwandeln, aber nicht jeder String stellt eine gültige Zahl dar. Zum Beispiel kann „42“ in die Zahl 42 geparst werden, aber „hello“ kann in keine Zahl umgewandelt werden:

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 konvertierten Wert enthält. Wenn es fehlschlägt, gibt es Err(error) mit Informationen darüber zurück, warum das Parsen fehlgeschlagen ist. Dies zwingt Sie dazu, beide Möglichkeiten explizit zu behandeln, was verhindert, dass Ihr Programm bei ungültigen Eingaben abstürzt.

Sie können das Parsing-Ergebnis mit jeder der Result-Techniken verarbeiten, die Sie gelernt haben – match für die explizite Behandlung, unwrap(), wenn Sie sicher sind, dass es erfolgreich sein wird, oder den ?-Operator, um Fehler weiterzugeben.

challenge icon

Aufgabe

Einfach

Schreiben Sie eine Funktion parse_to_integer, die einen String input entgegennimmt und den parsten Ganzzahlwert zurückgibt. Wenn der String nicht in eine gültige Ganzzahl umgewandelt werden kann, geben Sie 0 als Standardwert zurück.

Verwenden Sie die Methode .parse(), um den String in einen i32 zu konvertieren, und behandeln Sie das Result angemessen, um einen sicheren Rückgabewert zu liefern.

Parameter:

  • input (String): Der String, der in eine Ganzzahl umgewandelt werden soll

Rückgabewert: Die parste Ganzzahl bei Erfolg, oder 0, falls das Parsen fehlschlägt (i32)

Spickzettel

Die .parse() Methode wandelt einen String in eine Zahl um und gibt einen Result Typ zurück, da das Parsen fehlschlagen kann:

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

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

Wenn das Parsen erfolgreich ist, gibt .parse() Ok(number) zurück. Wenn es fehlschlägt, gibt sie Err(error) zurück.

Sie können Parsing-Ergebnisse mit match, unwrap(), dem ? Operator oder unwrap_or() behandeln, um im Fehlerfall einen Standardwert bereitzustellen.

Probier es selbst

fn parse_to_integer(input: String) -> i32 {
    // Schreibe den Code hier
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow