Ответ 1
Как насчет этого?
"1,112".delete(',').to_i
Есть ли какой-либо опрятный метод для преобразования "1,112" в целое число 1112 вместо 1?
У меня есть один, но не аккуратный:
"1,112".split(',').join.to_i #=> 1112
Как насчет этого?
"1,112".delete(',').to_i
Вы также можете убедиться, что ваш код локализуется правильно или убедитесь, что пользователи используются в "международной" нотации. Например, "1,112" фактически означает разные номера в разных странах. В Германии это означает число немногим более одного, а не тысячу и что-то.
Соответствующая статья в Википедии находится в http://en.wikipedia.org/wiki/Decimal_mark. На данный момент это плохо написано. Например, как китайский, я не знаю, откуда взялось это описание о тысячах разделителей в Китае.
Несколько более удобных
"1,1200.00".gsub(/[^0-9]/,'')
он делает "1 200 200" правильно работать, а
Я бы использовал String#tr
:
"1,112".tr(',','').to_i # => 1112
Ниже приведен другой метод, который будет работать, хотя, как и в случае с некоторыми другими методами, он будет разделять десятичные знаки.
a = 1,112
b = a.scan(/\d+/).join().to_i => 1112
Если кто-то ищет больше, чем запятую, я поклонник:
"1,200".chars.grep(/\d/).join.to_i
dunno о производительности, но он более гибкий, чем gsub
, то есть:
"1-200".chars.grep(/\d/).join.to_i