Ruby 2.3.1を使用しているRails 5アプリケーションでkeep_ifを使用しようとしています。文字列配列でkeep_ifを使用する方法
a = ["a", "b", "c", "d" ]
b = ["b", "d"]
a.keep_if { |v| v=~ /["#{b}"]/ }
#=> ["b", "d"]
実際のプロジェクト:私は期待したもの
a = ["apple", "banana", "orange"]
b = ["mangoes", "banana", "pear"]
a.keep_if { |v| v=~ /["#{b}"]/ }
#=> ["mangoes", "banana", "pear"]
:
#=> ["banana"]
私は、使用する正規表現のいくつかの並べ替えを推測していますか?私が期待したものを得る方法?
'a.keep_if {| v | b.include?(v)} '? –
Egad!なぜ答えを選択する急いで??? –
あなたのコードがうまくいかなかった理由を理解するには、これが実際に何をするかを考えてください: '/ ["#{b} "] /'。文字列補間( '#{...}')を使うと、Rubyは値に対して 'to_s'を呼び出し、その結果を文字列に入れます。この場合の 'b.to_s'は' ["b"、 "d"] 'を返します。最後の正規表現は'/["[" b "、" d "]"]/'です。正規表現がこのコードをデバッグするための最初のステップであることを確認してください。 –