Existe algum método bacana para converter "1.112" em inteiro 1112, em vez de 1?
Eu tenho um, mas não legal:
"1,112".split(',').join.to_i #=> 1112
Existe algum método bacana para converter "1.112" em inteiro 1112, em vez de 1?
Eu tenho um, mas não legal:
"1,112".split(',').join.to_i #=> 1112
Que tal agora?
"1,112".delete(',').to_i
Você também pode querer ter certeza de que seu código está localizado corretamente ou de que os usuários estejam acostumados com a notação "internacional". Por exemplo, "1.112" na verdade significa números diferentes em países diferentes. Na Alemanha, significa o número um pouco mais de um, em vez de mil e algo assim.
O artigo da Wikipedia correspondente está em http://en.wikipedia.org/wiki/Decimal_mark . Parece estar mal escrito neste momento. Por exemplo, como um chinês, não tenho certeza de onde vêm essas descrições sobre o separador de milhar na China.
fonte
Alguns mais convenientes
faz "1 200 200" funcionar corretamente também
fonte
'1,1200.00'.gsub(/[^0-9\.]/,'').to_f
."1,1200.00"
para"1120000"
? Você não deseja apenas substituir o,
(ou, dependendo do local, o.
)? Além disso, isso não o converte em um inteiro ou float, apenas uma string sem delimitadores.A seguir está outro método que funcionará, embora, como com alguns dos outros métodos, retire as casas decimais.
fonte
Eu faria usando
String#tr
:fonte
Se alguém quer sublinhar mais do que uma vírgula, sou fã de:
não sei sobre o desempenho, mas é mais flexível do que um
gsub
, ou seja:fonte
fonte