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?

¿Fue útil?

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"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top