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 であり、変更された配列ではありません)。コードを簡素化するには、reject を使用します

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