czołowe zera w szynach
Mam pola hr
i min
, obie liczby całkowite w mojej aplikacji. Dla pola hr
, jeśli użytkownik wprowadzi "1 "chciałbym, aby Rails automatycznie wstawił go do" 01 " przed zapisaniem go do bazy danych. Również dla pola min
jeśli użytkownik wprowadzi "0", powinien umieścić jako"00".
7 answers
Lepiej jest zapisać go jako liczbę całkowitą i po prostu wyświetlić go tak, jak opisano w uruchomieniu. Każdy język ma swój własny sposób na wstawianie zer-dla Rubiego można użyć String#rjust. Metoda ta blokuje łańcuch (justowany w prawo) tak, że staje się on zadaną długością, używając danego znaku dopełniającego.
str.rjust(integer, padstr=' ') → new_str
Jeśli
integer
jest większa niż długośćstr
, zwraca nowąString
o długościinteger
zstr
prawym uzasadnionym i wyściełanympadstr
; w przeciwnym razie zwracastr
.
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'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-29 20:49:04
Możesz przekształcić liczbę całkowitą w łańcuch tego rodzaju za pomocą:
result_string = '%02i' % your_integer
Jest to niezależne od tego, jak zostanie zapisane w db.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 07:45:08
Jest to również bardzo przydatne:
"%.2d" % integer
Wynikowy łańcuch będzie miał 2 znaki, a jeśli liczba jest mniejsza niż 2 znaki, to w łańcuchu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-01 19:08:06
Nie można zapisać 01
jako liczba całkowita. Zostanie przekonwertowany na 1
Możesz zapisać go jako ciąg znaków, lub możesz pokazać go jako ciąg znaków " 01 "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-08 23:12:17
Lubię operatora%, chociaż wydaje się, że wyszedł z łaski...
2.0.0-p247 :001 > '%02i' % 1
=> "01"
2.0.0-p247 :002 > '%2i' % 1
=> " 1"
2.0.0-p247 :003 > '%-2i' % 1
=> "1 "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-20 01:08:16
Innym sposobem, aby to osiągnąć, jest wstawianie liczby całkowitej w czasie wyświetlania, używając sprintf:
f = sprintf '%04d', 49
# f = "0049"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 13:22:48
Spróbuj tego, a możesz je zmienić, aby pasowały
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-13 19:15:21