Вы можете использовать массив вместо явного списка переменных, а затем выбирать вещи из массива по индексу:
string.scan(/regex/m) { |a|
print a[0], a[1] + ".ext", a[2].to_f / 25400000, a[3].to_f / 25400000, a[5], "\n"
}
Либо это, либо переделайте свое регулярное выражение, чтобы получить только то, что вам нужно.
Вы можете использовать одну и ту же переменную несколько раз в списке, так что простым переименованием вещей, которые вы не используете, в unused
, вероятно, будет самый простой выбор:
string.scan(/regex/m) { |a, b, c, d, unused, f, unused|
print a, b + ".ext", c.to_f / 25400000, d.to_f / 25400000, f, "\n"
}
По крайней мере, такочевидно (или должно быть), что вы не используете пятый и седьмой снимки.Однако это не работает в 1.9, поэтому вам придется использовать unused1
и unused2
в 1.9.
Идеальным балансом было бы использование именованных групп захвата 1.9, но scan
не делаетне дать вам доступ к ним.