কারাগারে রুবি: 10 বছরের কম বয়সী হলে আপনি কোনও সংখ্যার সামনে জিরো যুক্ত করবেন কীভাবে?


110

আমি একক অঙ্কের সংখ্যাগুলি এমনভাবে দুই-অঙ্কের সংখ্যায় রূপান্তর করতে দেখছি:

9 ==> 09
5 ==> 05
12 == 12
4 ==> 04

আমি অনুমান করি যে আমি যদি-অন্য বিবৃতিগুলির একগুচ্ছ রাখতে পারি (সংখ্যাটি যদি 10 এর কম হয় তবে একটি gsub করুন) তবে চিত্রটি ভয়াবহ কোডিং। আমি জানি রেলের সংখ্যা_বিহীন_পরিচয় আছে তবে আমি দেখতে পাচ্ছি যে এটি কেবলমাত্র দশমিক সংখ্যায় প্রযোজ্য। একক-অঙ্কগুলি কীভাবে দুই-অঙ্কে রূপান্তর করতে হয় সে সম্পর্কে কোনও ধারণা?

উত্তর:


142

মানে sprintf '%02d', n?

irb(main):003:0> sprintf '%02d', 1
=> "01"
irb(main):004:0> sprintf '%02d', 10
=> "10"

আপনি ভবিষ্যতে ফর্ম্যাট সারণিরsprintf রেফারেন্স করতে চাইতে পারেন , তবে এই নির্দিষ্ট উদাহরণটির '%02d'অর্থ dকমপক্ষে 2 টি অক্ষর ( 2) এবং বাম-প্যাডিং শূন্যস্থানগুলির পরিবর্তে জিরো দিয়ে প্রিন্ট করা হবে 0


আপনাকে ধন্যবাদ !! পারফেক্ট =) আপনাকে ধন্যবাদ!
sjsc

আপনার সম্ভবত %02iএই ক্ষেত্রে ব্যবহার করা উচিত কারণ আউটপুটটি একটি পূর্ণসংখ্যার হিসাবে অনুভূত হয় এবং এটি আরও স্পষ্ট যে d ব্যবহার করাতে অভ্যস্ত নয় এমন লোকের পক্ষে কম স্বজ্ঞাত sprintf
সানজেএ

আপনি কেবল '%02d'%1স্প্রিন্টফ ছাড়াই করতে পারেন
কিউশি হুয়াং

194

প্রচুর লোক ব্যবহার করছে sprintf(যা করার জন্য সঠিক জিনিস) এবং আমি মনে করি আপনি যদি স্ট্রিংয়ের জন্য এটি করতে চান তবে তার পদ্ধতি rjustএবং ljustপদ্ধতিগুলি মাথায় রাখাই সবচেয়ে ভাল :

"4".rjust(2, '0')

এটি "4"কমপক্ষে 2অক্ষর দীর্ঘ এবং এটির সাথে প্যাড করে নিশ্চিত করে সঠিকটিকে ন্যায়সঙ্গত করে তুলবে '0'ljustবিপরীত না।


2
আপনি যদি স্ট্রিংগুলিকে অনুমতি দিতে চান তবে এটি স্প্রিন্টফের চেয়ে ভাল better অন্যথায় আমি স্প্রিন্টফ ব্যবহার করব, যেহেতু আমি যদি ভুলবশত কোনও স্ট্রিং ব্যবহার করি তবে এটি একটি ব্যতিক্রম ছুঁড়ে দেয় (যেমনটি হওয়া উচিত)
ভেলিজার হরিস্টভ

আপনি যদি জানেন যে আপনি কোনও সংখ্যার একটি স্ট্রিং উপস্থাপনা দিয়ে শুরু করছেন, তবে আমি পারফরম্যান্সের জন্য স্প্রিন্টফের চেয়ে ভাল এটি পছন্দ করি। ব্যবহার rjustএড়াতে, sprintf ফর্ম্যাটটি স্ট্রিং পার্স, একটি সংখ্যা একটি স্ট্রিং রূপান্তর, এবং একটি স্ট্রিং যে সংখ্যা ফিরে রূপান্তরিত খরচ। এছাড়াও, কোডটি এক নজরে কী করার চেষ্টা করছে তা বোঝার জন্য এটি (তর্কযোগ্যভাবে) পক্ষে সহজ।
ডেভিড হেম্পি


8

এটি চেষ্টা করুন, এটি কাজ করা উচিত:

abc= 5
puts "%.2i" %abc   >> 05


abc= 5.0
puts "%.2f" %abc   >> 5.00

দুর্দান্ত, ঠিক আমি যা খুঁজছিলাম। এখানে কোনও নথিপত্র পাওয়া যায় বা কীভাবে আপনি এটি সম্পর্কে জানতে পেরেছেন?
রাজজি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.