Question

Supposons que j'ai une variable de type Int = 08, comment puis-je convertir en chaîne en gardant le zéro?

Par exemple:

v :: Int
v = 08

show v

Sortie: 8

Je veux que la sortie soit "08".

Est-ce possible?

Était-ce utile?

La solution

En fonction de ce que vous envisagez de faire vous pouvez stocker le « 08 » comme une chaîne et convertir seulement int quand vous avez besoin de la valeur.

Autres conseils

Utilisation Text.Printf.printf:

printf "%02d" v

Assurez-vous d'importer Text.Printf.printf d'abord.

Son 8, pas 08 dans la variable v . Oui, vous lui avez attribué 08 mais il reçoit 8. Cest la raison pour show méthode, il apparaît comme 8. Vous pouvez utiliser le travail autour donné par Mipadi .

Modifier

Sortie d'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

sortie d'un autre test.

Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"

J'espère que vous obtenez le point.

Modifier

Trouver une autre solution de contournement. Essayez ceci,

"0" ++ show v

La façon de printf est probablement le meilleur, mais il est assez facile d'écrire votre propre fonction:

show2d :: Int -> String 
show2d n | length (show n) == 1 = "0" ++ (show n)
         | otherwise = show n

fonctionne comme suit:

Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top