Leading zeros in Ruby Ask Question

Leading zeros in Ruby Ask Question

I have fields hr and min, both integers in my application. For hr field, if the user enters "1" I would like Rails to automatically pad it to "01" before saving it to the database. Also for the min field if the user enter "0" it should put in as "00".

How can I do this?

ベストアンサー1

It'd be better to store it as an integer and just display it as you described on runtime. Every language has its own way to pad zeros - for Ruby you can use String#rjust. This method pads a string (right-justified) so that it becomes a given length, using a given padding character.

str.rjust(integer, padstr=' ') → new_str

If integer is greater than the length of str, returns a new String of length integer with str right justified and padded with padstr; otherwise, returns str.

some_int = 5
some_int.to_s.rjust(2, '0')  # => '05'
some_int.to_s.rjust(5, '0')  # => '00005'

another_int = 150
another_int.to_s.rjust(2, '0') # => '150'
another_int.to_s.rjust(3, '0') # => '150'
another_int.to_s.rjust(5, '0') # => '00150'

おすすめ記事