如何在Haskell中填充整数的字符串表示?

oro*_*ome 8 string formatting haskell

我正在寻找一种惯用的(也许是内置的)填充左边的零整数字符串表示的方法.

在我的情况下,整数从不超过99

fix r = if length r == 1 then '0':r else r
fix.show <$> [1..15]
Run Code Online (Sandbox Code Playgroud)

作品.但我希望有更好的方法.

如何在Haskell中填充整数的字符串表示?

Eri*_*ikR 13

printf样式格式可通过Text.Printf模块获得:

import Text.Printf

fmt x = printf "%02d" x
Run Code Online (Sandbox Code Playgroud)

或者以特殊情况格式化0:

fmt 0 = "  "
fmt x = printf "%02d" x
Run Code Online (Sandbox Code Playgroud)


chi*_*chi 6

> (\x -> replicate (3 - length x) '0' ++ x) "2"
"002"
> (\x -> replicate (3 - length x) '0' ++ x) "42"
"042"
> (\x -> replicate (3 - length x) '0' ++ x) "142"
"142"
> (\x -> replicate (3 - length x) '0' ++ x) "5142"
"5142"
Run Code Online (Sandbox Code Playgroud)

以上利用了replicate在负参数上返回空字符串的事实.