我必须用Ruby解析制表符分隔的文本文件,以从中提取一些数据。由于某些未知的原因,一些列没有使用,只是基本上是间隔物;我想忽略这些列,因为我不需要它们的输出(但是我不能忽略所有空列,因为一些合法的列具有空值)。我已经知道这些列的索引(例如第6,14,24和38列)。
虽然我可以在解析文件时添加一个条件,并说解析它,除非它是其中一个列,这似乎不是“Rubyish” - 是否有更好,更优雅的方法来处理它? RegExps,也许?我想做[6, 14, 24, 38].each { |x| columns.delete_at(x) }
这样的事情来删除未使用的列,但这会迫使我重新确定我实际需要的列的索引。我真正想要做的就是遍历整个事情,检查当前列的索引,如果它是“坏”列之一,则忽略它。但是,使用像unless x == 6 || x == 14 || x == 24 || x == 38
答案 0 :(得分:7)
不需要像这样的大规模条件。
bad_cols = [6, 14, 24, 38]
columns.each_with_index do |val,idx|
next if bad_cols.include? idx
#process the data
end