Convert Haskell Int com zero à esquerda para String
Pergunta
Suponha que eu tenho uma variável do tipo Int = 08, como posso converter isso para String mantendo o zero?
Por exemplo:
v :: Int
v = 08
show v
Saída: 8
Eu quero que a saída seja "08".
Isso é possível?
Solução
Dependendo do que você está planejando fazer você pode querer armazenar o "08" como uma cadeia e só converter para int quando você precisar o valor.
Outras dicas
Use Text.Printf.printf
:
printf "%02d" v
Certifique-se de Text.Printf.printf
importação em primeiro lugar.
Seu 8, não 08 na variável v . Sim, você atribuiu 08 mas recebe 8. Isso é a razão pela Mostrar método exibido-lo como 8. Você pode usar o trabalho em torno dada pelo Mipadi .
Editar:
Saída de um teste.
Prelude> Text.Printf.printf "%01d\n" 08
8
Prelude> Text.Printf.printf "%02d\n" 08
08
Prelude> Text.Printf.printf "%03d\n" 08
008
Saída de outro teste.
Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"
Eu espero que você começa o ponto.
Editar:
Encontrado outra solução. Tente isso,
"0" ++ show v
A forma printf
é provavelmente o melhor, mas é fácil o suficiente para escrever sua própria função:
show2d :: Int -> String
show2d n | length (show n) == 1 = "0" ++ (show n)
| otherwise = show n
funciona da seguinte maneira:
Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"