如何在ruby中使用%格式化字符串输出?

时间:2011-07-06 23:44:26

标签: ruby string-formatting

我想格式化ruby中字符串的输出。我可以用%来做,但我无法弄明白。

而不是201107070928我要输出2011\07\070928

puts "%.4s\\%.2s\\%s" % "201107070928"

给我一​​个错误:'%':参数太少(ArgumentError)

2 个答案:

答案 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"