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.