我的字段hr
和min
都是我的应用程序中的整数。对于hr
字段,如果用户输入“1”,我希望Rails在将其保存到数据库之前自动将其填充为“01”。对于min
字段,如果用户输入“0”,则应输入“00”。
我该怎么做?
答案 0 :(得分:314)
最好将它存储为整数,并按照运行时描述的方式显示它。每种语言都有自己的填充零的方法 - 对于Ruby,你可以使用String#rjust。此方法使用给定的填充字符填充字符串(右对齐),使其成为给定长度。
<强>
str.rjust(integer, padstr=' ') → new_str
强>如果
integer
大于str
的长度,则返回String
长度为integer
的新str
padstr
右对齐并填充{{1} }};否则,返回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'
答案 1 :(得分:58)
您可以使用以下内容将整数转换为该类型的字符串:
result_string = '%02i' % your_integer
这与它在db中的保存方式无关。
答案 2 :(得分:17)
这也很方便:
"%.2d" % integer
结果字符串为2个字符,如果数字少于2个字符,则字符串中将出现0
答案 3 :(得分:8)
您不能将01
存储为整数。它将转换为1
您可以将其存储为字符串,也可以将其显示为字符串“01”
答案 4 :(得分:6)
我喜欢%运算符,即使它似乎已经失宠了......
2.0.0-p247 :001 > '%02i' % 1
=> "01"
2.0.0-p247 :002 > '%2i' % 1
=> " 1"
2.0.0-p247 :003 > '%-2i' % 1
=> "1 "
答案 5 :(得分:2)
实现此目的的另一种方法是使用sprintf:
在显示时填充整数android:text="My very own initial value"
答案 6 :(得分:-6)
尝试此操作,您可以将其更改为匹配
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