Есть ли какой-нибудь изящный способ преобразовать «1,112» в целое число 1112 вместо 1?
Есть один, но не аккуратный:
"1,112".split(',').join.to_i #=> 1112
Есть ли какой-нибудь изящный способ преобразовать «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 200 200" нормально работать
источник
'1,1200.00'.gsub(/[^0-9\.]/,'').to_f
."1,1200.00"
в"1120000"
? Разве вы не хотите просто заменить,
(или, в зависимости от локали,.
)? Кроме того, это не преобразует его в целое число или число с плавающей запятой, а только в строку без разделителей.Ниже приводится еще один метод, который будет работать, хотя, как и некоторые другие методы, он удаляет десятичные знаки.
источник
Я бы использовал
String#tr
:источник
Если кто-то хочет заменить больше запятой, я поклонник:
не знаю о производительности, но он более гибкий, чем a
gsub
, то есть:источник
источник