我在应用程序中有两个整数字段
我该如何实现这个功能?
hr
和min
。 对于hr
字段,如果用户输入"1",我希望Rails在保存到数据库之前自动将其填充为"01"。 对于min
字段,如果用户输入"0",它应该以"00"形式输入。我该如何实现这个功能?
hr
和min
。 对于hr
字段,如果用户输入"1",我希望Rails在保存到数据库之前自动将其填充为"01"。 对于min
字段,如果用户输入"0",它应该以"00"形式输入。最好将其存储为整数,并在运行时按您描述的方式显示。每种语言都有自己的零填充方式-对于Ruby,您可以使用String#rjust。此方法填充(右对齐)字符串,使其成为给定长度,使用给定的填充字符。
str.rjust(integer, padstr=' ') → new_str
如果
integer
大于str
的长度,则返回一个新的长度为integer
的String
,其中str
右对齐并用padstr
填充;否则,返回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'
这也非常方便:
"%.2d" % integer
结果字符串将是2个字符,如果数字少于2个字符,则字符串中将存在0s。
你不能将01
存储为整数。它会被转换为1
你可以将其存储为字符串,或者将其显示为字符串"01"
我喜欢百分号操作符,尽管它似乎已经不受青睐了...
2.0.0-p247 :001 > '%02i' % 1
=> "01"
2.0.0-p247 :002 > '%2i' % 1
=> " 1"
2.0.0-p247 :003 > '%-2i' % 1
=> "1 "
f = sprintf '%04d', 49
# f = "0049"
试试这个,你可以改变它们以匹配
def numeric92(num)
if num.present?
if num < 0 && num > -1
('-%05d' % num) + '.' + ('%.2f' % num).split('.').last
else
('%06d' % num) + '.' + ('%.2f' % num).split('.').last
end
else
'000000.00'
end
end
if num < 0 && num > -1
是什么意思? - Francisco Quintero