Ruby 如何将'20134859'格式化为'20-13:48:59'`

Ruby 如何将'20134859'格式化为'20-13:48:59'`,ruby,string-formatting,Ruby,String Formatting,有没有什么好的(也许只有一行)格式 20134859进入20-13:48:59 我从“20134859.unpack('a2a*')。join('-')开始,但我不知道如何解决:我在想,如果或者如何拆分并连接(':')从unpack返回的第二个元素。全部在一行中 这是可行的,但我肯定有一些东西我会更喜欢 s = "20134859" "#{s[0,2]} - #{s[2,2]}:#{s[4,2]}:#{s[6,2]}" 我最喜欢你的答案,但你可能想试试字符串上的%操作符,看看你是否更喜欢它。

有没有什么好的(也许只有一行)格式

20134859
进入
20-13:48:59

我从
“20134859.unpack('a2a*')。join('-')
开始,但我不知道如何解决
我在想,如果或者如何拆分并连接(':')从unpack返回的第二个元素。全部在一行中

这是可行的,但我肯定有一些东西我会更喜欢

s = "20134859"
"#{s[0,2]} - #{s[2,2]}:#{s[4,2]}:#{s[6,2]}" 

我最喜欢你的答案,但你可能想试试字符串上的
%
操作符,看看你是否更喜欢它。只是一个想法。它确实使整个格式字符串更加明显。

我最喜欢您的答案,但您可能希望尝试字符串上的
%
运算符,看看您是否更喜欢它。只是一个想法。它确实使整个格式字符串更加明显

irb(main):001:0> "%s - %s:%s:%s"%"20134859".unpack('a2'*4)
=> "20 - 13:48:59"
或者使用从DigitalRoss借来的
scan

irb(main):002:0> "%s - %s:%s:%s"%"20134859".scan(/../)
=> "20 - 13:48:59"
或者使用从DigitalRoss借来的
scan

irb(main):002:0> "%s - %s:%s:%s"%"20134859".scan(/../)
=> "20 - 13:48:59"

例如,
%2d-%2d:%2d:%2d“%[s[0,2],s[2,2],s[4,2],s[6,2]]
即,
%2d-%2d:%2d:%2d”%[s[0,2],s[2,2],s[4,2],s[6,2]
嘿,有趣。我不会想到这一个。我喜欢在这里我可以从两个伟大的答案中选择。你能解释一下为什么
a2
用撇号括起来吗?@Radek,而不是双引号?只是懒散的不一致所以,它是不是意味着4次“a2”?嘿,很有趣。我不会想到这一个。我喜欢在这里我可以从两个伟大的答案中选择。你能解释一下为什么
a2
用撇号括起来吗?@Radek,而不是双引号?只是懒散的不一致所以,它是不是意味着4次“a2”?