【问题标题】:Converting Time strings into proper Formats in Ruby在 Ruby 中将时间字符串转换为正确的格式
【发布时间】:2015-06-16 07:17:33
【问题描述】:

我试图在 Ruby 中将以下字符串转换为适当的时间,

For.Ex.

 string_a = "1 minute, 6 seconds"   
 string_b = "3 minutes, 35 seconds" 

我想要实现的是,

将:string_a 转换为时间格式:1:06 - 因为它只有 6 秒,所以在其前面添加 0
并将string_b 转换为时间格式:3.35

请有人帮帮我吗?

【问题讨论】:

  • 我尝试使用扫描,然后尝试分别处理每个字符串。但我打算制作一种函数,以便我可以传递字符串,并据此获得转换后的字符串。例如。 1 分 0 秒 = 1:0 2 分 2 秒 = 2:02 和 3 分 34 秒 = 3:34

标签: ruby string datetime time


【解决方案1】:

假设输入字符串总是采用相同的格式:

time = string_a.scan(/\d+/)
time[0] + ":" +  time[1].rjust(2,'0')
# => "1:06"

string_b = "3 minutes, 35 seconds"
timeb = string_b.scan(/\d+/)
timeb[0] + ":" +  timeb[1].rjust(2,'0')
# => "3:35"

您可以使您的正则表达式更严格,但是如果输入字符串始终采用“m 分钟,s 秒”格式,那么这就足够了。

【讨论】:

  • 在这种情况下,string_a 工作正常,因为它以秒为单位。但是在string_b 中,我们以秒为单位有 2 位数字。根据上面的代码,对于string_b,我得到的是:` "3:0" ` 而不是3:35
  • @beginner_yaml_user 你一定是做错了什么。它对我来说工作正常。我在回答中也更新了string_b 示例。请重新检查。
猜你喜欢
  • 2012-02-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
相关资源
最近更新 更多