Я использую Rails 5 с Ruby 2.4. Я хочу преобразовать строку, которая представляет продолжительность (время) в миллисекунды, поэтому у меня есть эта функция
def duration_in_milliseconds(input)
if input && input.count("a-zA-Z ") == 0
if input.index(".") && !input.index(":")
input.gsub!(/\./, ':')
end
# replace bizarre apostraphes where they intended ":"'s
input.gsub!(/'/, ':')
# Strip out unnecessary white space
input.gsub!(/\A\p{Space}+|\p{Space}+\z/, '')
input.split(':').map(&:to_f).inject(0) { |a, b| a * 60 + b } * 1000
else
0
end
end
Это отлично подходит для таких строк, как «6:52» (6 минут, 52 секунды), но также работает и для таких строк, как «52: 6» (что неверно, «52:06» будет правильным). Я хочу, чтобы функция возвращала ноль, если кто-то вводит одну цифру в любом месте, кроме первого числа перед «:». Как мне это сделать? Заметьте, что я все еще хочу, чтобы длительность вроде «15: 24,8» выполнялась в обычном режиме (то есть 15 минут, 24 секунды и восемь десятых секунды).
5.678
допустимый ввод? - person Jordan Running   schedule 29.01.2017.
в качестве разделителя вместо:
. В таком случае это1.23
одна минута 23 секунды или 1,23 секунды? - person Jordan Running   schedule 30.01.2017