2013-07-16 2 views
0

Я woring на шаблоне .erb (для марионетки) с текстовым файлом, как это:Создание массива после конкатенации селективных элементов массива

ec2-23-22-59-32, mongoc, i-b8b44, instnum=0, Running 
ec2-54-27-11-46, mongod, i-43f9f, instnum=1, Running 
... 
... 
ec2-78-62-92-20, mongod, i-02fa4, instnum=8, Running 
ec2-24-47-51-23, mongos, i-546c4, instnum=9, Running 

, и я пытаюсь получить массив, как это из из него:

['mongoc-i-b8b44', 'mongod-i-43f9f', .... 'mongod-i-02fa4', 'mongos-i-546c4'] 

я могу сделать несколько вещей, как создать массив, принимая только 2-й и 3-й элементы:

a_type = [] 
IO.foreach(inFile) do |line| 
    a_type.push line.split(',')[1..2].map(&:strip) 
end 
a_type.join(',') 
# => mongoc,i-b5b406dd,mongod,i-b6f9f1d5 

или присоединиться к всем элементам массива, как это:

ar = ['sd', 'ser', 'wer'] 
ar.map! { |k| "#{k}" }.join('-') 
# => "sd-ser-wer" 

, но не может понять, как добиться результата, что я ищу. Любая помощь/указатель?

ответ

3
File.read(inFile).each_line.map do |line| 
    line.split(', ')[1..2].join('-') 
end 
+2

Я бы написал: 'open (inFile) .lines.map' – tokland

+0

@Amit: Spot on! Не понял, что все будет так просто; Я думал о ракетной науке. Большое спасибо! – MacUsers

+1

@tokland: Не могли бы вы объяснить, что является (функциональной) разницей между 'each_line.map' и' lines.map'? – MacUsers

Смежные вопросы