如何在Ruby中迭代多个数组以形成一对一映射

如何在Ruby中迭代多个数组以形成一对一映射,ruby,Ruby,我正在阅读下面的文件,并根据制表符拆分值(值以制表符分隔),然后分配给3个数组 id\u details.txt id\a_po87y Jack leader id\ruio66 John_Marsha leader_1 id\rzd766 123_Smart_option fresher id\ruio66 John_Marsha automation_dev .... etc Joined on Feb 7, 2016 Created by: Solomon (r

我正在阅读下面的文件,并根据制表符拆分值(值以制表符分隔),然后分配给3个数组

id\u details.txt

id\a_po87y  Jack    leader
id\ruio66   John_Marsha leader_1
id\rzd766   123_Smart_option    fresher
id\ruio66   John_Marsha automation_dev
....
etc
Joined on Feb 7, 2016
Created by: Solomon (ruio66) 

[groups]
leader_1 = id\rty67, id\mztrt, id\ruio66, ncr\025kc, id\a_po87y
automation = id\bzo0l4, ccr\poxz7j
automation_dev = id\ruio66
Joined on Jan 7, 2016
Created by: Jack Rondon 

[groups]
leader_1 = id\sop0r2, id\34_dev, id\mz4d5, id\ruio66
fresher = id\kzpo98, id\gz8sl7, id\cp0jxr, id\fzxlol, 
automation_dev = id\ruio66
3阵列

id = ["id\a_po87y", "id\ruio66", "id\rzd766", "id\ruio66", etc..]

store = ["Jack", "John_Marsha", "123_Smart_option", "John_Marsha", etc...]

group = ["leader", "leader_1", "fresher", "automation_dev", etc...]
Jack_details.txt

id\a_po87y  Jack    leader
id\ruio66   John_Marsha leader_1
id\rzd766   123_Smart_option    fresher
id\ruio66   John_Marsha automation_dev
....
etc
Joined on Feb 7, 2016
Created by: Solomon (ruio66) 

[groups]
leader_1 = id\rty67, id\mztrt, id\ruio66, ncr\025kc, id\a_po87y
automation = id\bzo0l4, ccr\poxz7j
automation_dev = id\ruio66
Joined on Jan 7, 2016
Created by: Jack Rondon 

[groups]
leader_1 = id\sop0r2, id\34_dev, id\mz4d5, id\ruio66
fresher = id\kzpo98, id\gz8sl7, id\cp0jxr, id\fzxlol, 
automation_dev = id\ruio66
John_Marsha_details.txt

id\a_po87y  Jack    leader
id\ruio66   John_Marsha leader_1
id\rzd766   123_Smart_option    fresher
id\ruio66   John_Marsha automation_dev
....
etc
Joined on Feb 7, 2016
Created by: Solomon (ruio66) 

[groups]
leader_1 = id\rty67, id\mztrt, id\ruio66, ncr\025kc, id\a_po87y
automation = id\bzo0l4, ccr\poxz7j
automation_dev = id\ruio66
Joined on Jan 7, 2016
Created by: Jack Rondon 

[groups]
leader_1 = id\sop0r2, id\34_dev, id\mz4d5, id\ruio66
fresher = id\kzpo98, id\gz8sl7, id\cp0jxr, id\fzxlol, 
automation_dev = id\ruio66
读取文件-Jack_details.txt(存储数组的第一个值)并转到行id-前导(组数组的第一个值),然后仅从该行删除字符串-id\a_po87y(第一个值id数组)

类似地,检查文件-John_Marsha_details.txt中id-leader_1行中的字符串-id\ruio66,并从该行中删除该字符串

必须对id_details.txt中的所有条目执行相同的操作

这是一个直接的一对一数组映射——“id->store->group”。根据我的初学者经验,我成功地编写了以下代码(不完整),我不确定如何达到我的要求。有什么建议可以让它发挥作用吗?提前谢谢

file_dir = 'E:/ruby_work'

file = File.open("E:/ruby_work/id_details.txt", "r")
contents = file.each_line.map { |line| line.split("\t") }.transpose
id, file_name, group  = contents


id.each do |ids|
  puts "For ID: #{ids}"
  file_name.each do |name| 
   value = File.open("#{file_dir}/#{name}_details.txt")
   text = File.read(value)
   #puts text
   text.each_line do |el|
    group.each do |gr|
     if el.match(/#{gr}/) then 
      print "group row #{gr}\n"
      print "Its matching\n"
      replace = text.gsub( /#{Regexp.escape(ids)}\,\s/, '').gsub( /#{Regexp.escape(ids)}/, '' ).gsub /,\s*$/, ''
      else print "Not\n"
         print "group row #{gr}\n"
     end
     group.shift
    end 
   end
   file_name.shift
  end

 end  
id.shift
我得到的输出

For ID: id\a_po87y
Not
group row leader

Not
group row leader_1

For ID: id\ruio66

很抱歉我发了这么长的帖子,我希望我已经正确地传达了要求。

你为什么一开始就把它分成三个数组?@DaveNewton:谢谢你的关注。我对哈希或其他选项不像我那样有信心;在我的帖子中,我对ruby非常陌生,所以由于经验有限,我选择了数组。