Есть много способов сделать это. Вот еще один:
time1 = "10min 43s"
time2 = "32min 30s"
def get_mins_and_secs(time_str)
time_str.scan(/\d+/).map(&:to_i)
#=> [10, 43] for time_str = time1, [32, 30] for time_str = time2
end
min, sec = get_mins_and_secs(time1)
min2, sec2 = get_mins_and_secs(time2)
min += min2
sec += sec2
if sec > 59
min += 1
sec -= 60
end
puts "#{min}min #{sec}sec"
Давайте рассмотрим, что здесь происходит. Во-первых, вам нужно извлечь минуты и секунды из строк времени. Я сделал способ сделать это:
def get_mins_and_secs(time_str)
time_str.scan(/\d+/).map(&:to_i)
#=> [10, 43] for time_str = time1, [32, 30] for time_str = time2
end
Для time_str = "10min 43s",
мы применяем метод [email protected]
, чтобы извлечь два числа как строки:
"10min 43s".scan(/\d+/) # => ["10", "43"]
Array#map
затем используется для преобразования этих двух строк в целые числа
["10", "43"].map {|e| e.to_i} # => [10, 43]
Это можно записать более кратко, как
["10", "43"].map(&:to_i} # => [10, 43]
приковав map
к к scan
получаем
"10min 43s".scan(/\d+/).map(&:to_i} # => [10, 43]
Массив [10, 43]
возвращается и получил (деконструкции) переменными min
и sec
:
min, sec = get_mins_and_secs(time_str)
Остальное просто.
Если что выход быть «43min 13s»? –
Какие у вас есть решения и почему они вас не удовлетворяют? «Вопросы, требующие кода, должны демонстрировать минимальное понимание решаемой проблемы. Включите попытки решения, почему они не работают и ожидаемые результаты». –
Моя попытка: time1 = "10min 43s" d1 = DateTime.strptime (time1, '% М') выход: Сб, 2 ноября 2013 00:10:00 +0000 TIME2 = "32min 30s" d2 = DateTime.strptime (time2, '% М') выход: Сб , 02 ноя 2013 00:32:00 +0000 тогда я не могу продвигаться тогда. Любая идея? Спасибо @SergioTulentsev. – monsur