Вы хотите .squeeze
и .strip
str = " field0 field1 [ [field2a] [field2b] ] field3"
puts str.squeeze.strip
#=> "field0 field1 [ [field2a] [field2b] ] field3"
Сжатие сжимает любой лишний пробел до единицы. Полоска удалит начальное и конечное пространство строки.
Оттудау вас должна быть возможность использовать сопоставление с шаблоном регулярных выражений для анализа каждой строки в структуре данных, которую вы пытаетесь создать, но я не могу с этим поделать, не зная, как анализировать данные.
Вам также следует попробоватьчтобы повысить ожидания раньше, не нужно перебирать весь файл.
Если вы знаете, что ваша линия будет соответствовать этому шаблону в вашем примере:
if str.squeeze!.strip! !str[/\w+\ +\[\ +\[+\w+\]\ \[+\w+\]\ \]\ \w+/]
raise StandardError, "Raise this string pattern is wrong #{str}"
end
Если вы хорошо, то вы можете разделить или что-то еще:
str.split(' ')
#=>["field0", "field1", "[", "[field2a]", "[field2b]", "]", "field3"]