我想格式化ruby中字符串的输出。我可以用%来做,但我无法弄明白。
而不是201107070928
我要输出2011\07\070928
puts "%.4s\\%.2s\\%s" % "201107070928"
给我一个错误:'%':参数太少(ArgumentError)
答案 0 :(得分:10)
这不是你用它来格式化日期的方式。使用%
格式的方法是:
puts "%.4s\\%.2s\\%s" % ["1","2","3"]
因此,您需要多个参数 - 每个参数对应一个格式说明符。
如果您需要打印&格式化字符串日期的日期,首先将字符串转换为日期/时间对象,然后使用strftime
:
假设输入是日期和时间:
Time.parse("201107070928").strftime("%Y\\%m\\%d%H%M").
答案 1 :(得分:5)
我会把这个放在答案而不是评论中,因为我对这种可能性印象更深刻。使用String#unpack,我们可以处理4位/ 2位/ 任何:
"201107070928345345345".unpack("a4a2a*").join('/')
=> "2011/07/070928345345345"