как создать плоский файл в ruby - PullRequest
2 голосов
/ 21 июля 2010

как я могу создать плоский файл в ruby?

Плоский файл, в котором каждая буква помещается под определенным номером столбца в файле.

Так, например, если я читаю некоторые значения из БД:

Name         Class
-------------------
one          A
two          English
three        Math
four         Science

и я хочу сделать из него плоский файл, где имена должны находиться между столбцами 1–10, а class - между столбцами 20–30. Как я могу создать этот файл? Я знаю, как записать в файл, но не знаю, как записать в файл ... с указанными столбцами ...?

Я попробовал sprintf от Младена Яблановича, ответ

C:\>ruby parse.rb
2342342423
SOMETHING
2342
01/03/2010SDSDFS
234234
sprintf on array        2342342423SOMETHING 2342      01/03/2010SDSDFS234234

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

Вы можете использовать sprintf (или его эквивалент String#%) с дополненными полями:

"%-10s%-10s%-10s" % ['two', '', 'English']
#=> "two                 English   "
1 голос
/ 21 июля 2010

Если вы не хотите использовать строки printf, вы также можете использовать методы ljust и rjust.Если у вас есть нестроковые данные, вам, возможно, придется добавить вызов to_s, хотя в этот момент printf может быть лучше.

puts "#{name.ljust(10)} #{subject.ljust(10)}"
# => "Three      English"

Если вам нужно более серьезное форматирование и вы знакомы с форматами из perlили fortran (я думаю), вы можете захотеть взглянуть на FormatR gem , который позволяет вам так же форматировать и может работать с верхними и нижними колонтитулами, размерами страниц и тому подобным.Вот простой фрагмент:

@)      @<<<<<<<<<<<<<<<<       @#.##
num,    location,             toe_size

И в результате

1)      Market                   3.50
...