रेल में अग्रणी शून्य


152

मेरे पास अपने आवेदन में फ़ील्ड hrऔर minदोनों पूर्णांक हैं। के लिए hrफ़ील्ड में, उपयोगकर्ता में प्रवेश करती है, तो "1" मैं अपने आप पैड को रेल यह "01" के लिए डेटाबेस के लिए सहेजने से पहले चाहते हैं। minफ़ील्ड के लिए भी यदि उपयोगकर्ता "0" दर्ज करता है तो इसे "00" के रूप में रखा जाना चाहिए।

मैं यह कैसे कर सकता हूँ?

जवाबों:


336

इसे पूर्णांक के रूप में संग्रहीत करना बेहतर होगा और जैसा कि आपने रनटाइम पर वर्णित किया है, बस इसे प्रदर्शित करें। हर भाषा का ज़ीरो को पैड करने का अपना तरीका है - रूबी के लिए आप स्ट्रिंग # अन्याय का उपयोग कर सकते हैं । यह विधि एक स्ट्रिंग (दाएं-न्यायोचित) को पैड करती है ताकि किसी दिए गए पैडिंग चरित्र का उपयोग करके यह एक दी गई लंबाई बन जाए।

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

अगर integerकी लंबाई से अधिक है str, एक नया रिटर्न Stringलंबाई के integerसाथ strसही रूप से उचित और साथ गद्देदार 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 वर्णों से कम है, तो 0 स्ट्रिंग में मौजूद होगी


8

आप 01पूर्णांक के रूप में संग्रहीत नहीं कर सकते । इसे परिवर्तित किया जाएगा1

आप इसे एक स्ट्रिंग के रूप में संग्रहीत कर सकते हैं, या आप इसे एक स्ट्रिंग "01" के रूप में दिखा सकते हैं


4
इसे एक पूर्णांक के रूप में संग्रहीत करें और इसे एक स्ट्रिंग के रूप में दिखाएं (0 के साथ गद्देदार) मेरी सिफारिश होगी। Apache के Java StringUtils में एक अच्छा पैड तरीका था। गद्दी पर यह धागा मिला: रूबी-forum.com/topic/82137
McStretch

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में क्या है?
फ्रांसिस्को क्विंटो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.