Преобразуйте haskell Int с начальным нулем в строку

StackOverflow https://stackoverflow.com/questions/376968

  •  22-08-2019
  •  | 
  •  

Вопрос

Предположим, у меня есть переменная типа Int = 08, как я могу преобразовать ее в строку с сохранением начального нуля?

Например:

v :: Int
v = 08

show v

Выходной сигнал:8

Я хочу, чтобы на выходе было "08".

Возможно ли это?

Это было полезно?

Решение

В зависимости от того, что вы планируете делать, вы можете сохранить "08" в виде строки и преобразовывать в int только тогда, когда вам нужно значение.

Другие советы

Использование Text.Printf.printf:

printf "%02d" v

Обязательно импортируйте Text.Printf.printf Первый.

Это 8, а не 08 в переменной v.Да, вы назначили ему 08, но он получает 8.Вот в чем причина показать метод отобразил его как 8.Вы можете использовать обходной путь, предложенный Мипади.

Редактировать:

Вывод теста.

Prelude> Text.Printf.printf "%01d\n" 08
8
Prelude> Text.Printf.printf "%02d\n" 08
08
Prelude> Text.Printf.printf "%03d\n" 08
008

Вывод другого теста.

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

Я надеюсь, вы поняли, к чему я клоню.

Редактировать:

Найден другой обходной путь.Попробуй это,

"0" ++ show v

В printf способ, вероятно, лучший, но достаточно просто написать свою собственную функцию:

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

Работает следующим образом:

Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top