Convertir Haskell Int con cero a la izquierda de Cadena
Pregunta
Supongamos que tengo una variable de tipo int = 08, ¿cómo puedo convertir esto en Cadena mantener el cero?
Por ejemplo:
v :: Int
v = 08
show v
Salida: 8
Quiero que la salida sea "08".
¿Es esto posible?
Solución
Dependiendo de lo que está planeando hacer es posible que desee almacenar el "08" como una cadena y sólo convertir a int cuando se necesita el valor.
Otros consejos
Uso Text.Printf.printf
:
printf "%02d" v
Asegúrese de importar Text.Printf.printf
primero.
Su 8, no 08 en la variable v . Sí, se ha asignado 08 pero recibe 8. Esa es la razón por Mostrar método aparece como 8. Puede utilizar el trabajo alrededor dada por Mipadi .
Editar
salida de una prueba.
Prelude> Text.Printf.printf "%01d\n" 08
8
Prelude> Text.Printf.printf "%02d\n" 08
08
Prelude> Text.Printf.printf "%03d\n" 08
008
Salida de otra prueba.
Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"
Espero que consigue el punto.
Editar
Encontrados otra solución. Prueba de esto,
"0" ++ show v
La forma printf
es probablemente el mejor, pero es bastante fácil de escribir su propia función:
show2d :: Int -> String
show2d n | length (show n) == 1 = "0" ++ (show n)
| otherwise = show n
Funciona de la siguiente manera:
Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"