Convertire Haskell Int con zero a String
Domanda
Supponiamo che io sono una variabile di tipo int = 08, come posso convertire questo String mantenere lo zero?
Per esempio:
v :: Int
v = 08
show v
Output: 8
Voglio l'uscita sia "08".
È possibile?
Soluzione
A seconda di cosa si sta progettando di fare si potrebbe desiderare di conservare la "08" come una stringa e solo convertire in int quando si ha bisogno il valore.
Altri suggerimenti
Usa Text.Printf.printf
:
printf "%02d" v
Assicurati di importare Text.Printf.printf
prima.
La sua 8, non 08 in variabile v . Sì, è stato assegnato è 08 ma riceve 8. Questo è il motivo per show Metodo visualizzata come 8. È possibile utilizzare il lavoro intorno dato da Mipadi .
Modifica
Output di un test.
Prelude> Text.Printf.printf "%01d\n" 08
8
Prelude> Text.Printf.printf "%02d\n" 08
08
Prelude> Text.Printf.printf "%03d\n" 08
008
uscita di un altro test.
Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"
Spero che si ottiene il punto.
Modifica
Trovato un'altra soluzione. Prova questo,
"0" ++ show v
Il modo printf
è probabilmente la cosa migliore, ma è abbastanza facile da scrivere la propria funzione:
show2d :: Int -> String
show2d n | length (show n) == 1 = "0" ++ (show n)
| otherwise = show n
funziona nel seguente modo:
Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"