রেল নেতৃস্থানীয় শূন্য


152

আমার প্রয়োগে ক্ষেত্রগুলি hrএবং minউভয়ই পূর্ণসংখ্যা রয়েছে। জন্য hrক্ষেত্র, ব্যবহারকারী প্রবেশ যদি "1" আমি স্বয়ংক্রিয়ভাবে প্যাড থেকে পাগল এটি "01" থেকে ডাটাবেসের সাথে এটা সংরক্ষণ করার পূর্বে চাই। minক্ষেত্রের জন্যও যদি ব্যবহারকারী "0" লিখেন তবে এটি "00" হিসাবে রাখা উচিত।

কিভাবে আমি এটি করতে পারব?

উত্তর:


336

এটি একটি পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা এবং রানটাইম হিসাবে আপনি যেমন বর্ণনা করেছেন ঠিক তেমন এটি প্রদর্শন করা ভাল। প্রতিটি ভাষার জিরোগুলিকে প্যাড করার নিজস্ব উপায় রয়েছে - রুবির জন্য আপনি স্ট্রিং # রুল্ড ব্যবহার করতে পারেন । এই পদ্ধতিটি একটি স্ট্রিংকে প্যাড করে (ডান-ন্যায়সঙ্গত) যাতে প্রদত্ত প্যাডিং অক্ষর ব্যবহার করে এটি একটি নির্দিষ্ট দৈর্ঘ্যে পরিণত হয়।

str.rjust(integer, padstr=' ') → new_str

তাহলে integerএর দৈর্ঘ্য চেয়ে বেশী str, একটি নতুন ফেরৎ Stringদৈর্ঘ্যের integerসঙ্গে strডান সমর্থনযোগ্য এবং padded padstr; অন্যথায়, ফেরত str

some_int = 5
some_int.to_s.rjust(2, '0')  # => '05'
some_int.to_s.rjust(5, '0')  # => '00005'

another_int = 150
another_int.to_s.rjust(2, '0') # => '150'
another_int.to_s.rjust(3, '0') # => '150'
another_int.to_s.rjust(5, '0') # => '00150'


20

এটিও বেশ সহজ:

"%.2d" % integer

ফলস্বরূপ স্ট্রিংটি 2 টি অক্ষরের হবে এবং যদি সংখ্যাটি 2 টির চেয়ে কম বর্ণের হয় তবে 0s স্ট্রিংটিতে উপস্থিত থাকবে


8

আপনি 01পূর্ণসংখ্যা হিসাবে সঞ্চয় করতে পারবেন না । এটি রূপান্তরিত হবে1

আপনি এটি একটি স্ট্রিং হিসাবে সংরক্ষণ করতে পারেন, বা আপনি একটি স্ট্রিং "01" হিসাবে প্রদর্শন করতে পারেন


4
এটি একটি পূর্ণসংখ্যা হিসাবে সঞ্চয় করুন এবং এটিকে স্ট্রিং হিসাবে দেখান (০ এর প্যাডযুক্ত) আমার প্রস্তাবনা হবে would অ্যাপাচের জাভা স্ট্রিং ইউটিলেসের মতো দুর্দান্ত প্যাড পদ্ধতি ছিল। এই থ্রেডটি প্যাডিংয়ে পাওয়া গেছে: রুবি
ফর্ম

6

আমি% অপারেটরটিকে পছন্দ করি, যদিও মনে হয় এটি অনুকূলে চলে গেছে ...

2.0.0-p247 :001 > '%02i' % 1
 => "01"
2.0.0-p247 :002 > '%2i' % 1
 => " 1"
2.0.0-p247 :003 > '%-2i' % 1
 => "1 "

3

এটি অর্জনের আরেকটি উপায় হ'ল স্প্রিন্টফ ব্যবহার করে প্রদর্শনের সময় আপনার পূর্ণসংখ্যার প্যাড করা:

f = sprintf '%04d', 49
# f = "0049"

-5

এটি ব্যবহার করে দেখুন এবং আপনি সেগুলি ম্যাচে পরিবর্তন করতে পারেন

def numeric92(num)
  if num.present?
    if num < 0 && num > -1
      ('-%05d' % num) + '.' + ('%.2f' % num).split('.').last
    else
      ('%06d' % num) + '.' + ('%.2f' % num).split('.').last
    end
  else
    '000000.00'
  end
end

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