Несколько опций существуют как обычно.
Если вы хотите сделать это вручную, я бы предложил что-то вроде этого:
очень псевдокод:
Read file
while lines in file
handle_line(line)
end
def handle_line
type=first_char
parse_line(type)
end
def parse_line
split into elements and do_whatever_to_them
end
Разделение строки на элементы с фиксированным значением может быть выполнено, например, unpack()
irb(main):001:0> line="1923 000-230SomeHeader 0303030"
=> "1923 000-230SomeHeader 0303030"
irb(main):002:0* list=line.unpack("A1A5A7a15A10")
=> ["1", "923", "000-230", "SomeHeader ", "0303030"]
irb(main):003:0>
Шаблон, используемый для unpack()
, будет варьироваться в зависимости от длины поля для различных типов записей, и код будет зависеть от того, хотите ли вы использовать конечные пробелы и тому подобное. Подробнее см. ссылка на распаковку .