تحويل هاسكل الباحث مع الرائد صفر إلى سلسلة
سؤال
لنفترض لدي متغير من نوع Int = 08, كيف يمكنني تحويل هذا إلى سلسلة حفظ الرائدة الصفر ؟
على سبيل المثال:
v :: Int
v = 08
show v
الإخراج:8
أريد الإخراج إلى أن "08".
هل هذا ممكن ؟
المحلول
واعتمادا على ما كنت تخطط للقيام قد ترغب في تخزين "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
والطريقة 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