Как отформатировать вывод строки, используя% в рубине? - PullRequest
5 голосов
/ 07 июля 2011

Я хочу отформатировать вывод строки в ruby. Я могу сделать это, используя%, но я не могу понять это.

Вместо 201107070928 Я хочу вывести 2011\07\070928

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

выдает ошибку: `% ': слишком мало аргументов (ArgumentError)

Ответы [ 2 ]

10 голосов
/ 07 июля 2011

Это не так, как вы используете его для форматирования даты. Способ использования % форматирования:

puts "%.4s\\%.2s\\%s" % ["1","2","3"]

Итак, вам нужно несколько параметров - по одному для каждого из спецификаторов формата.

Если вам нужно распечатать и отформатировать дату из строки-даты, сначала преобразуйте строку в объект даты / времени, а затем используйте strftime:

Предполагается, что введены дата и время:

Time.parse("201107070928").strftime("%Y\\%m\\%d%H%M"). 
5 голосов
/ 07 июля 2011

Я собираюсь поместить это в ответ, а не в комментарий только потому, что меня больше впечатляет такая возможность.Используя String # unpack , мы можем обрабатывать 4 цифры / 2 цифры / что угодно с помощью:

"201107070928345345345".unpack("a4a2a*").join('/')
 => "2011/07/070928345345345"
...