DNB5brims
DNB5brims

Reputation: 30568

Is there any built-in method in RoR to fill zero for integer?

If I want "00001" instead of "1", apart from writing my own filling zero method, is there any built in method can help me fill in zero for the integer?

Upvotes: 5

Views: 668

Answers (3)

Wayne Conrad
Wayne Conrad

Reputation: 107989

puts "%05d" % 1    # 00001

See: String::%, Kernel::sprintf

Here's what's going on. The "%05d" to the left of the % is a C style format specifier. The variable on the right side of the % is the thing to be formatted. The format specifier can be decoded like this:

  • % - beginning of format specifier
  • 0 - Pad with leading zeros
  • 5 - Make it 5 characters long
  • d - The thing being formatted is an integer

If you were formatting multiple things, you'd put them in an array:

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

Upvotes: 8

John Topley
John Topley

Reputation: 115322

an_int = 1
'%05d' % an_int #=> 00001

Upvotes: 0

Scott Arrington
Scott Arrington

Reputation: 12503

puts 1.to_s.rjust(5,'0')

Upvotes: 4

Related Questions