简体   繁体   中英

Convert haskell Int with leading zero to String

Suppose I have a variable of type Int = 08, how can I convert this to String keeping the leading zero?

For instance:

v :: Int
v = 08

show v

Output: 8

I want the output to be "08".

Is this possible?

Use Text.Printf.printf :

printf "%02d" v

Make sure to import Text.Printf.printf first.

Its 8, not 08 in variable v . Yes, you assigned it 08 but it receives 8. Thats the reason show method displayed it as 8. You can use the work around given by Mipadi .

Edit:

Output of a 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

Output of another test.

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

I hope you get the point.

Edit:

Found another workaround. Try this,

"0" ++ show v

根据您计划执行的操作,您可能希望将“08”存储为字符串,并在需要值时仅转换为int。

The printf way is probably best, but it's easy enough to write your own function:

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

Works as follows:

Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM