有很多方法可以做到这一点。这里有另一个:
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