0

我正在尝试使用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
4

1 回答 1

0

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

finaltext = totaltext.reject{|sentence| nilfacs.any?{|fac| sentence =~ /#{fac}/i } }
于 2012-05-07T15:04:48.317 回答