Konvertieren Haskell Int mit führenden Null String
Frage
Angenommen, ich eine Variable vom Typ Int habe = 08, wie kann ich diese konvertieren zu String der führenden Null zu halten?
Zum Beispiel:
v :: Int
v = 08
show v
Ausgang: 8
Ich mag die Ausgabe "08".
seinIst das möglich?
Lösung
Je nachdem, was Sie planen, was Sie tun könnten, die „08“ als String speichern und konvertieren möchten nur in int, wenn Sie den Wert benötigen.
Andere Tipps
Verwenden Text.Printf.printf
:
printf "%02d" v
Stellen Sie sicher, Text.Printf.printf
zuerst importieren.
Die 8, nicht 08 in Variable v . Ja, Sie es 08 zugewiesen, aber es erhält 8. Das ist der Grund, zeigen Methode als 8. angezeigt Sie die Arbeit um von Mipadi gegeben.
Edit:
Ausgabe eines Tests.
Prelude> Text.Printf.printf "%01d\n" 08
8
Prelude> Text.Printf.printf "%02d\n" 08
08
Prelude> Text.Printf.printf "%03d\n" 08
008
Ausgabe von einem anderen Test.
Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"
Ich hoffe, Sie erhalten den Punkt.
Edit:
Gefunden eine andere Abhilfe. Versuchen Sie dies,
"0" ++ show v
Der printf
Weg ist wahrscheinlich am besten, aber es ist einfach genug, um Ihre eigene Funktion zu schreiben:
show2d :: Int -> String
show2d n | length (show n) == 1 = "0" ++ (show n)
| otherwise = show n
funktioniert wie folgt:
Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"