Esiste un metodo accurato per convertire "1,112" nell'intero 1112, invece di 1?
Ne ho uno, ma non pulito:
"1,112".split(',').join.to_i #=> 1112
Risposte:
Cosa ne pensi di questo?
"1,112".delete(',').to_i
Puoi anche assicurarti che il tuo codice venga localizzato correttamente o assicurarti che gli utenti siano abituati alla notazione "internazionale". Ad esempio, "1.112" in realtà significa numeri diversi nei diversi paesi. In Germania significa il numero poco più di uno, invece di mille e qualcosa.
L'articolo di Wikipedia corrispondente è all'indirizzo http://en.wikipedia.org/wiki/Decimal_mark . Sembra essere scritto male in questo momento però. Ad esempio, come cinese, non sono sicuro da dove provenga questa descrizione sui mille separatori in Cina.
Alcuni più convenienti
"1,1200.00".gsub(/[^0-9]/,'')
fa funzionare correttamente anche "1 200 200"
'1,1200.00'.gsub(/[^0-9\.]/,'').to_f
.
"1,1200.00"
in "1120000"
? Non vuoi semplicemente sostituire il ,
(o, a seconda del locale, il .
)? Inoltre, questo non lo converte in un numero intero o in un float, solo una stringa senza delimitatori.
Lo farei usando String#tr
:
"1,112".tr(',','').to_i # => 1112
String count = count.replace(",", "");