8

Int = 08 型の変数があるとします。これを先行ゼロを保持したまま String に変換するにはどうすればよいでしょうか。

例えば:

v :: Int
v = 08

show v

出力: 8

出力を「08」にしたい。

これは可能ですか?

4

4 に答える 4

24

使用Text.Printf.printf:

printf "%02d" v

Text.Printf.printf最初に必ずインポートしてください。

于 2008-12-18T05:30:46.057 に答える
8

変数vの 08 ではなく 8 です。はい、08 を割り当てましたが、8 を受け取りました。これがshowメソッドで 8 と表示された理由です

編集:

テストの出力。

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
于 2008-12-18T06:39:10.100 に答える
3

計画している内容によっては、「08」を文字列として保存し、値が必要な場合にのみ int に変換することをお勧めします。

于 2008-12-18T06:49:45.727 に答える