Desidero inserire uno spazio ad ogni terzo carattere durante la formattazione di un numero. In base a questa specifica:Formattazione di un numero da dividere ad ogni terza cifra
it "should format an amount" do
spaces_on(1202003).should == "1 202 003"
end
e sono arrivato fino a questo pezzo di codice che fa il lavoro
def spaces_on amount
thousands = amount/1000
remainder = amount % 1000
if thousands == 0
"#{remainder}"
else
zero_padded_remainder = '%03.f' % remainder
"#{spaces_on thousands} #{zero_padded_remainder}"
end
end
Quindi la mia domanda è se questo era il modo migliore per farlo. Sospetto che possa esserci un modo regolare per aggirarlo ma non sono sicuro che mi piacerà la leggibilità di ciò. (D'altra parte - la magia% 03.f non è molto leggibile sia ....)
+1 si presero la risposta giusta dalla mia mente! =) – maerics
bel pezzo. Trovo che molti sviluppatori non conoscano affatto la regex, il che mi evita, ma lo stesso vale probabilmente anche per la ricorsione! Punto preso. – froderik
Ovviamente qui la magia non è l'espressione regolare - una volta che conosci l'obiettivo del metodo, è facile individuare il bit "aggiungendo spazi ogni 3 caratteri". Il 'reverse' /' reverse' è l'unico vero salto mentale. – Gareth