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".

sein

Ist das möglich?

War es hilfreich?

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"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top