Int = 08 型の変数があるとします。これを先行ゼロを保持したまま String に変換するにはどうすればよいでしょうか。
例えば:
v :: Int
v = 08
show v
出力: 8
出力を「08」にしたい。
これは可能ですか?
使用Text.Printf.printf
:
printf "%02d" v
Text.Printf.printf
最初に必ずインポートしてください。
変数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
計画している内容によっては、「08」を文字列として保存し、値が必要な場合にのみ int に変換することをお勧めします。