रूबी ऑन रेल्स: यदि आप 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इस मामले के लिए उपयोग करना चाहिए क्योंकि यह अधिक स्पष्ट है कि आउटपुट है और पूर्णांक माना जाता है, डी उन लोगों के लिए कम सहज है जो उपयोग करने के आदी नहीं हैं sprintf
सीनजा

आप बस '%02d'%1स्प्रिंटफ के बिना
Qiushi हुआंग

194

बहुत से लोग sprintf(जो कि सही काम करना है) का उपयोग करते हैं, और मुझे लगता है कि यदि आप इसे एक स्ट्रिंग के लिए करना चाहते हैं तो यह सबसे अच्छा तरीका है rjustऔर ljustविधियों को ध्यान में रखें :

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

यह यह सुनिश्चित करेगा कि "4"यह कम से कम 2वर्ण लंबा हो और इसे पैड के साथ सही बनाए '0'ljustइसके विपरीत करता है।


2
यह केवल स्प्रिंट से बेहतर है यदि आप स्ट्रिंग्स की अनुमति देना चाहते हैं। अगर मैं गलती से एक स्ट्रिंग का उपयोग करता हूं, तो अन्यथा मैं स्प्रिंटफ का उपयोग करूंगा, क्योंकि यह एक अपवाद (जैसे यह होना चाहिए) फेंकता है।
वेलिज़र हिस्ट्रोव

यदि आप जानते हैं कि आप एक संख्या के स्ट्रिंग प्रतिनिधित्व के साथ शुरू कर रहे हैं, तो मुझे यह प्रदर्शन के लिए स्प्रिंटफ से बेहतर लगता है। का उपयोग करते हुए rjustटाल sprintf का प्रारूप स्ट्रिंग पार्स करने, एक नंबर के लिए एक स्ट्रिंग परिवर्तित करने, और एक स्ट्रिंग के लिए उस नंबर वापस परिवर्तित करने की लागत। इसके अलावा, यह (यकीनन) एक मानव के लिए यह समझना आसान है कि कोड एक नज़र में क्या करने की कोशिश कर रहा है।
डेविड हेम्पी


8

यह कोशिश करो, यह काम करना चाहिए:

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


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

बहुत बढ़िया, बिल्कुल मैं क्या देख रहा था। क्या कोई दस्तावेज उपलब्ध है या आप इसके बारे में कैसे सीख सकते हैं?
राज

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