将haskell Int转换为前导零到String

Ric*_*ral 8 string int haskell

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

例如:

v :: Int
v = 08

show v
Run Code Online (Sandbox Code Playgroud)

输出:8

我希望输出为"08".

这可能吗?

mip*_*adi 23

用途Text.Printf.printf:

printf "%02d" v
Run Code Online (Sandbox Code Playgroud)

确保先导入Text.Printf.printf.

  • 或者`import Text.Printf(printf)` (2认同)

Ade*_*ari 8

它的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
Run Code Online (Sandbox Code Playgroud)

输出另一个测试.

Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"
Run Code Online (Sandbox Code Playgroud)

我希望你明白这一点.

编辑:

找到另一种解决方法.试试这个,

"0" ++ show v
Run Code Online (Sandbox Code Playgroud)


The*_*rko 3

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

  • 做相反的事情听起来更好。将其存储为 int 并将其更改为 string 以用于显示目的。 (4认同)