0

我有一个看起来像这样的音频标签:“ 00:14:164”,即“ MM:SS:splits”。

我希望格式为数字,并且仅以秒为单位。

例如:

00:14:164”将是14.164

01:59:582”将是119.582

这样做的最佳方法是什么?

4

1 回答 1

2
def tag_to_f(tag)
  a = tag.split(':').map(&:to_i)
  "#{a[0] * 60 + a[1]}.#{a[2]}".to_f
end

tag_to_f "01:59:582"

或猴子补丁String

class String
  def to_f_with_audio_tag
    if a = match(/^(\d+):(\d+):(\d+)$/).to_a[1..3].map(&:to_i) rescue nil
      "#{a[0] * 60 + a[1]}.#{a[2]}".to_f_without_audio_tag
    else
      to_f_without_audio_tag
    end
  end

  alias_method_chain :to_f, :audio_tag
end

"01:59:582".to_f
于 2012-06-14T03:49:49.087 回答