Chcę przekonwertować liczby jednocyfrowe na liczby dwucyfrowe, na przykład:
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
Myślę, że mógłbym umieścić kilka instrukcji if-else (jeśli liczba jest mniejsza niż 10, zrób gsub), ale to okropne kodowanie. Wiem, że Railsy mają number_with_precision, ale widzę, że dotyczy to tylko liczb dziesiętnych. Jakieś pomysły, jak zamienić pojedyncze cyfry na dwucyfrowe?
ruby-on-rails
ruby
sjsc
źródło
źródło
%02i
w tym przypadku, ponieważ jest bardziej oczywiste, że wynik jest i powinien być liczbą całkowitą, d jest mniej intuicyjny dla osób, które nie są tak przyzwyczajone do używaniasprintf
.'%02d'%1
bez sprintuWiele osób używa
sprintf
(co jest słuszne) i myślę, że jeśli chcesz to zrobić dla ciągu znaków , najlepiej pamiętać o metodachrjust
iljust
:Spowoduje to, że
"4"
prawo będzie uzasadnione, upewniając się, że ma co najmniej2
znaki i dopełnia je'0'
.ljust
robi odwrotnie.źródło
rjust
pozwala uniknąć kosztu analizowania ciągu formatu sprintf, konwersji ciągu na liczbę i konwersji tej liczby z powrotem na ciąg. Poza tym (prawdopodobnie) człowiekowi łatwo jest zrozumieć, co próbuje zrobić kod na pierwszy rzut oka.co powiesz na to
"%02d" % 9
? patrz http://www.ruby-doc.org/core-2.0/String.html#method-i-25 i http://www.ruby-doc.org/core-2.0/Kernel.html#method-i -sprintf .źródło
Spróbuj tego, powinno działać:
źródło