HaskellのIntがStringに先行ゼロを変換します
質問
私は= 08、int型の変数があると、どのように私は、先行ゼロを維持する文字列にこれを変換することができますか?
たとえばます:
v :: Int
v = 08
show v
出力:8
私は、出力が "08" になりたい。
このことは可能ですか?
解決
あなたがすることを計画している内容に応じて、あなたは文字列として「08」を記憶し、唯一のあなたが値を必要なときにint型に変換したい場合があります。
他のヒント
Text.Printf.printf
を使用します:
printf "%02d" v
最初Text.Printf.printf
をインポートすることを確認します。
その8、変数ではない08 のV の。はい、あなたはそれを08に割り当てられたが、それは理由厥8を受け取り、のショーの方法は、あなたが使用することができます8として、それを表示する<のhref =「https://stackoverflow.com/a/376982/1477667」 >仕事は周り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"
所属していません StackOverflow