有很多方法可以做到這一點。這裏有另一個:
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, '%M') 輸出:星期六,2013年11月2日00:10:00 0000 TIME2 = 「30年代32分鐘」 D2 = DateTime.strptime(TIME2, '%M') 輸出:星期六,2013年11月2日00:32:00 +0000 然後我不能進步then.Any idea? 謝謝@SergioTulentsev。 – monsur