Mehrfachauswahl mit einem Musterabgleich
Datumsangaben umwandeln
Ziel ist es jetzt, Datumsangaben vom internationale Standardformat in ein deutsches Textformat umzuwandeln:
Umwandlung: Standardformat -> Textformat Beispiele: 2013-12-26 -> 26. Dezember 2013 2013-02-21 -> 21. Februar 2013 2013-12-06 -> 6. Dezember 2013 2013-05-06 -> 6. Mai 2013
Verschachtelte Fallunterscheidungen verwenden
Wir betrachten hier das Teilproblem, aus einer Montasangabe im Zahlenformat eine Monatsangabe im Textformat zu bestimmen.
Übergabe: - Monatsangabe im Zahlenformat: "02" Rückgabe: - Monatsangabe im Textformat: "Februar"
Diese Umwandlung lässt sich mit einer Funktion monatTextformat
implementieren.
monatTextformat: String -> String
monatTextformat monatZahlenformat =
if monatZahlenformat == "01" then
"Januar"
else
if monatZahlenformat == "02" then
"Februar"
else
"..."
Aufgabe 1
Ergänze zumindest einen weiteren Monat und teste die (noch nicht ganz fertige) Funktion mit geeigneten Funktionsaufrufen.
Einen Musterabgleich verwenden
Die folgende Implementierung der Funktion monatTextformat
verwendet einen case
-Ausdruck.
monatTextformat: String -> String
monatTextformat monatZahlenformat =
case monatZahlenformat of
"01" -> "Januar"
"02" -> "Februar"
"03" -> "März"
_ -> "?"
Aufgabe 2
(a) Teste zunächst diese Funktionsdefinition. Teste u.a. auch die Monatsangabe "05" und die Angabe "im Mai". Wozu könnte der Fall _ -> "?"
dienen?
(b) Die Implementierung ist noch nicht fertig. Ergänze die fehlenden Monate. Behalte den Fall _ -> "?"
bei, um alle nicht beabsichtigten
Werte bei der Verarbeitung zu berücksichtigen.
Das Datum umwandeln
Mit Hilfe der Funktion monatTextformat
sowie weiterer Funktionen aus dem Modul Teilzeichenketten.elm
lässt sich die gewünschte Umwandlung jetzt implementieren.
module Datumsangaben exposing (..)
import Zeichenketten exposing (..)
monatTextformat: String -> String
monatTextformat monatZahlenformat =
case monatZahlenformat of
"01" -> "Januar"
"02" -> "Februar"
"03" -> "März"
_ -> "?"
textFormat: ...
textFormat datum =
let
jahr = zeichenVorPos 5 datum
monat = ...
tag = ...
in
...
Aufgabe 2
Ergänze die Funktionsdefinition der Funktion textformat
und teste sie mit verschiedenen Funktionsaufrufen.