it-swarm.com.de

Ruby on Rails: Wie fügen Sie vor einer Zahl Nullen hinzu, wenn diese unter 10 ist?

Ich suche, einstellige Zahlen in zweistellige Zahlen umzuwandeln:

9 ==> 09
5 ==> 05
12 == 12
4 ==> 04

Ich denke, ich könnte eine Reihe von if-else-Anweisungen setzen (wenn die Zahl unter 10 ist, dann mache ich einen gsub), aber das ist eine schreckliche Kodierung. Ich weiß, dass Rails number_with_precision hat, aber ich sehe, dass dies nur für Dezimalzahlen gilt. Irgendwelche Ideen, wie man einstellige in zwei Ziffern umwandeln kann?

100
sjsc

Meinten Sie sprintf '%02d', n?

irb(main):003:0> sprintf '%02d', 1
=> "01"
irb(main):004:0> sprintf '%02d', 10
=> "10"

Möglicherweise möchten Sie in Zukunft auf die Tabelle format für sprintf verweisen. In diesem Beispiel bedeutet '%02d', eine Ganzzahl (d) zu drucken, die mindestens 2 Zeichen (2) und Leerzeichen anstelle von Leerzeichen enthält (0).

133
Mark Rushakoff

Viele Leute verwenden sprintf (was das Richtige ist, was zu tun ist), und ich denke, wenn Sie diesen für einen String machen wollen, sollten Sie die Methoden rjust und ljust beachten:

"4".rjust(2, '0')

Dadurch wird das "4"-Recht gerechtfertigt, indem sichergestellt wird, dass es mindestens 2 Zeichen lang ist, und mit '0' aufgefüllt. ljust macht das Gegenteil.

179
Ryan Bigg
36
ax.

Probieren Sie es aus, es sollte funktionieren:

abc= 5
puts "%.2i" %abc   >> 05


abc= 5.0
puts "%.2f" %abc   >> 5.00
8
Salil

Schienen 5.2.2

Wie hier beschrieben: https://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html können Sie die Bibliotheksmethode verwenden:

number_with_precision(123, precision: 2) // 123.00
0
dimpiax