簡體   English   中英

將haskell Int轉換為前導零到String

[英]Convert haskell Int with leading zero to String

假設我有一個Int = 08類型的變量,如何將其轉換為String保持前導零?

例如:

v :: Int
v = 08

show v

輸出:8

我希望輸出為“08”。

這可能嗎?

使用Text.Printf.printf

printf "%02d" v

確保首先導入Text.Printf.printf

它的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

輸出另一個測試。

Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"

我希望你明白這一點。

編輯:

找到另一種解決方法。 試試這個,

"0" ++ show v

根據您計划執行的操作,您可能希望將“08”存儲為字符串,並在需要值時僅轉換為int。

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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM