2010-01-25 59 views

回答

8
puts "%05d" % 1 # 00001 

見:String::%Kernel::sprintf

這裏是發生了什麼事情。 %左側的"%05d"是C風格格式說明符。 %右側的變量是要格式化的東西。格式說明可以解碼這樣的:

  • % - 格式說明符的開始
  • 0 - 填充帶前導零
  • 5 - 讓它5個字符長
  • d - 被格式化的東西是整數

如果你是格式化多的東西,你把它們放在一個數組:

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

簡單而優雅,但我不明白的代碼。這對我來說似乎有點奇怪。 – DNB5brims 2010-01-25 17:14:13

+0

%d表示十進制,它表示%之後的值,05表示將零填充到十進制以使其長度爲5. – 2010-01-25 17:16:21

+2

該格式基於C的printf。它被很多語言使用,所以值得學習。 http://en.wikipedia.org/wiki/Printf – srboisvert 2010-01-25 18:07:42

4
puts 1.to_s.rjust(5,'0') 
0
an_int = 1 
'%05d' % an_int #=> 00001 
相關問題