我期待的個位數轉換爲兩個數字像這樣:Ruby on Rails:如果在10以下時,如何在數字前添加零?
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
我想我可以把一堆if-else語句的(如果數字低於10,然後做一個GSUB)但數字是可怕的編碼。我知道Rails有number_with_precision,但我發現它只適用於十進制數字。關於如何將單位數字轉換爲兩位數字的任何想法?
我期待的個位數轉換爲兩個數字像這樣:Ruby on Rails:如果在10以下時,如何在數字前添加零?
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
我想我可以把一堆if-else語句的(如果數字低於10,然後做一個GSUB)但數字是可怕的編碼。我知道Rails有number_with_precision,但我發現它只適用於十進制數字。關於如何將單位數字轉換爲兩位數字的任何想法?
您的意思是sprintf '%02d', n
?
irb(main):003:0> sprintf '%02d', 1
=> "01"
irb(main):004:0> sprintf '%02d', 10
=> "10"
你可能要參考format table for sprintf
在未來,但對於這個特殊的例子'%02d'
意味着要打印一個整數(d
)佔用至少2個字符(2
)和左填充用零而不是空格(0
)。
試試這個,它應該工作:
abc= 5
puts "%.2i" %abc >> 05
abc= 5.0
puts "%.2f" %abc >> 5.00
真棒,正是我在找的東西。是否有任何文檔可用或您是如何瞭解它的? – TheMouseMan 2014-02-06 16:55:31
很多使用sprintf
(這是做正確的事),我認爲,如果你想爲一個字符串做到這一點這是最好的人要記住的rjust
和ljust
方法:
"4".rjust(2, '0')
這將確保使"4"
右對齊它的長度至少2
字符的d用'0'
填充它。 ljust
則相反。
如果你想允許字符串,這隻比sprintf更好。否則,我會使用sprintf,因爲如果我不小心使用了一個字符串,它會拋出一個異常(就像它應該)。 – 2015-01-09 16:23:24
謝謝馬克!完美=)謝謝! – sjsc 2010-04-22 17:05:52
對於這種情況,您應該使用'%02i',因爲更明顯的是輸出是並且應該是一個整數,對於不習慣使用'sprintf'的人來說,d不那麼直觀。 – SeanJA 2010-04-23 04:21:07