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