如何在ruby中创建一个平面文件

时间:2010-07-21 15:53:38

标签: ruby string formatting

如何在ruby中创建平面文件?

平面文件是每个字母放在文件中的特定列号。

例如,如果我正在从DB中读取一些值:

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

我想制作一个平面文件,其中名称在第1列到第10列之间,类在第20到30列之间。如何制作该文件?我知道如何写入文件但不知道如何写入文件......使用指定的列...?

我在MladenJablanović的回答中尝试了sprintf

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

2 个答案:

答案 0 :(得分:3)

您可以将sprintf(或其等效的String#%)与填充字段一起使用:

"%-10s%-10s%-10s" % ['two', '', 'English']
#=> "two                 English   "

答案 1 :(得分:1)

如果您不想使用printf字符串,您还可以使用ljust和rjust方法。如果您有非字符串数据,则可能需要引入to_s调用,但此时printf可能会更好。

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

如果您发现自己需要更严格的格式并且熟悉perl或fortran的格式(我认为),您可能需要查看FormatR gem,它可以让您像这样格式化并且可以处理页眉,页脚,页面大小等。这是一个简单的snippit:

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

结果

1)      Market                   3.50