假设我有一个int类型= 08的变量,我怎么可以将它转换为字符串保持前导零?转换哈斯克尔诠释与领先的零字符串
例如:
v :: Int
v = 08
show v
输出:8
我想要的输出为 “08”。
这可能吗?
假设我有一个int类型= 08的变量,我怎么可以将它转换为字符串保持前导零?转换哈斯克尔诠释与领先的零字符串
例如:
v :: Int
v = 08
show v
输出:8
我想要的输出为 “08”。
这可能吗?
取决于你正在计划做你可能要存储“08”为一个字符串,只转换为int,当你需要的价值。
使用Text.Printf.printf
:
printf "%02d" v
确保导入Text.Printf.printf
第一。
它只是`进口Text.Printf` – cevaris 2014-09-17 06:26:24
它的8个,08不变量v。是的,您分配它08,但却接收8.这就是原因显示方法显示它作为8.您可以使用the work around given by 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
的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"
行动,输出实际上是 “8”,而不是8 – 2008-12-18 05:24:32
嗯,说v = 08和v = 8或v = 008或v = 0000008一样。没有办法找回你已经定义了多少个0的信息。您只能打印一定数量的0,如下面的答案。 – ShreevatsaR 2008-12-18 05:54:57