我正在使用Rails 4.2.7。我有这个功能,用于将时间(以毫秒为单位)转换为可读字符串
def time_formatted
Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S")
end
我的问题是,如果我的东西少于一个小时,则函数返回“00:37:25”或者如果我的东西少于10分钟,则函数返回“00:07:52”。如何从函数中消除前导零?
答案 0 :(得分:1)
r = /
\A # match beginning of string
(?:00:) # match string '00:' in a non-capture group
* # perform above non-capture group match zero or more times, greedily
0? # optionally match a zero
\K # discard all matches so far
.+ # match rest of string
/x # free-spacing regex definition mode
"00:00:00"[r] #=> "0"
"00:00:01"[r] #=> "1"
"00:00:21"[r] #=> "21"
"00:02:11"[r] #=> "2:11"
"00:12:11"[r] #=> "12:11"
"02:13:14"[r] #=> "2:13:14"
"12:13:14"[r] #=> "12:13:14"
答案 1 :(得分:0)
您可以使用正则表达式删除前导零
def time_formatted
Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S").sub(/^(0+:?)*/, '')
end
答案 2 :(得分:0)
说你有
time = "00:37:25"
您可以使用正则表达式删除前导零
regex = /^(0*:?)*/
然后您可以运行sub!
str.sub!(regex, '') #=> 35:25