Я хотел бы преобразовать строку, включающую в себя КБ, МБ, ГБ как часть строки, в целочисленный эквивалент.
Примеры
"24kb" = 24.kilobytes = 24576
"32MB" = 32.megabytes = 33554432
"64 GB" = 64.gigabytes = 68719476736
Я могу go другой Кстати, целое число в строку, используя ...
>> ActiveSupport::NumberHelper.number_to_human_size(68719476736)
=> "64 GB"
Я пытался ...
>> Integer("64GB")
=> ArgumentError: invalid value for Integer(): "64GB"
Я могу создать свой собственный метод, делая что-то вроде ...
def convert_size_to_integer(size)
size.downcase!
if(size.end_with? 'kb')
size.to_i.kilobytes
elsif(size.end_with? 'mb')
size.to_i.megabytes
elsif(size.end_with? 'gb')
size.to_i.gigabytes
else
size.to_i
end
end
но это неудовлетворительно и, похоже, что-то уже есть для этого. И, конечно, я мог бы упростить это и сделать его более надежным с помощью регулярных выражений. Но я стараюсь вообще не писать это, находя что-то, что уже существует.
Есть предложения?