繁体   English   中英

将haskell Int转换为前导零到String

[英]Convert haskell Int with leading zero to String

假设我有一个Int = 08类型的变量,如何将其转换为String保持前导零?

例如:

v :: Int
v = 08

show v

输出:8

我希望输出为“08”。

这可能吗?

使用Text.Printf.printf

printf "%02d" v

确保首先导入Text.Printf.printf

它的8,而不是08变量v 是的,你给它分配了08但它收到8.这就是显示方法显示为8的原因。你可以使用Mipadi给出的工作

编辑:

输出测试。

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

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

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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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