array.select的语法是什么?

时间:2012-05-07 14:55:26

标签: ruby arrays

我正在尝试使用Array.select从包含不需要的项目的数据库中分离出来然后删除字符串。我没有得到任何错误,但这似乎没有像希望的那样工作。

相关代码是最后一部分:

totaltext = []
masterfacs = ''
nilfacs = ''

roomfacs_hash = {'lcd' => lcd2, 'wifi'=> wifi2, 'wired' => wired2, 'ac' => ac2}
roomfacs_hash.each do |fac, fac_array| 
  if roomfacs.include? (fac) 
    totaltext = (totaltext + fac_array)
    masterfacs = (masterfacs + fac + ' ')
  else
    nilfacs = (nilfacs + fac + ' ')
  end
end

finaltext = Array.new
text_to_delete = totaltext2.select {|sentences| sentences =~ /#{nilfacs}/i}
finaltext = totaltext2.delete (text_to_delete)
puts finaltext

1 个答案:

答案 0 :(得分:0)

它可能无法正常工作,因为delete不是可链接的方法(返回值是您尝试在成功时删除的对象,如果未找到则返回nil; 修改后的数组)。要简化代码,只需使用reject

即可
finaltext = totaltext.reject{|sentence| nilfacs.any?{|fac| sentence =~ /#{fac}/i } }