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?

È stato utile?

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"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top