تحويل هاسكل الباحث مع الرائد صفر إلى سلسلة

StackOverflow https://stackoverflow.com/questions/376968

  •  22-08-2019
  •  | 
  •  

سؤال

لنفترض لدي متغير من نوع 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"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top