2010-01-25 18 views

Trả lời

8
puts "%05d" % 1 # 00001 

Xem: String::%, Kernel::sprintf

Đây là những gì đang xảy ra. "%05d" ở bên trái của % là trình định dạng định dạng kiểu C. Biến ở bên phải của% là thứ cần định dạng. Từ khoá định dạng có thể được giải mã như thế này:

  • % - bắt đầu format specifier
  • 0 - Pad với số không hàng đầu
  • 5 - Làm cho nó dài 5 ký tự
  • d - Điều được định dạng là một số nguyên

Nếu bạn được định dạng nhiều thứ, bạn muốn đặt chúng trong một mảng:

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

đơn giản và thanh lịch, nhưng tôi không hiểu mã. có vẻ hơi lạ đối với tôi. – DNB5brims

+0

% d có nghĩa là số thập phân, trong đó đề cập đến giá trị sau%, số 05 có nghĩa là để số 0 đến số thập phân để làm cho nó dài 5. –

+2

Việc định dạng dựa trên printf của C. Nó được sử dụng bởi rất nhiều ngôn ngữ vì vậy nó là giá trị học tập. http://en.wikipedia.org/wiki/Printf – srboisvert

4
puts 1.to_s.rjust(5,'0') 
0
an_int = 1 
'%05d' % an_int #=> 00001 
Các vấn đề liên quan