2010-01-25 9 views
5

अगर मैं "1" के बजाय "00001" चाहता हूं, तो अपनी खुद की भरने वाली शून्य विधि लिखने के अलावा, क्या कोई अंतर्निहित विधि पूर्णांक के लिए शून्य भरने में मेरी सहायता कर सकती है?क्या पूर्णांक के लिए शून्य भरने के लिए RoR में कोई अंतर्निहित विधि है?

उत्तर

8
puts "%05d" % 1 # 00001 

देखें: String::%, Kernel::sprintf

यहाँ क्या हो रहा है है। % के बाईं ओर "%05d" एक सी शैली प्रारूप विनिर्देशक है। % के दाईं ओर परिवर्तक स्वरूपित करने की बात है। फॉर्मेट स्पेसिफायर इस तरह डीकोड किया जा सकता:

  • % - फॉर्मेट स्पेसिफायर की शुरुआत
  • 0 - अग्रणी शून्य
  • 5 के साथ पैड - यह 5 वर्णों
  • घ करें - बात स्वरूपित किया जा रहा है एक पूर्णांक

आप कई चीजों स्वरूपण थे, तो आप एक सरणी में डाल चाहते हैं:

"%d - %s" % [1, "One"] # => 1 - one 
+0

सरल और सुरुचिपूर्ण, लेकिन मुझे कोड समझ में नहीं आता है। यह मेरे लिए थोड़ा अजीब लगता है। – DNB5brims

+0

% d का अर्थ दशमलव है, जो% के बाद मान को संदर्भित करता है, 05 का मतलब है कि इसे लंबाई 5 बनाने के लिए पैड शून्य को पैड जेरोस करना है। –

+2

फ़ॉर्मेटिंग सी के प्रिंटफ आधारित है। इसका उपयोग कई भाषाओं द्वारा किया जाता है, इसलिए यह सीखने लायक है। http://en.wikipedia.org/wiki/Printf – srboisvert

0
an_int = 1 
'%05d' % an_int #=> 00001 
संबंधित मुद्दे