Rubyで文字列に配列内の部分文字列が含まれているかどうかを確認する

概要

Tmail ライブラリを使用していますが、電子メール内の添付ファイルごとに、attachment.content_type を実行すると、コンテンツ タイプだけでなく名前も取得されることがあります。例:

image/jpeg; name=example3.jpg

image/jpeg; name=example.jpg

image/jpeg; name=photo.JPG

image/png

次のような有効なコンテンツ タイプの配列があります。

VALID_CONTENT_TYPES = ['image/jpeg']

コンテンツ タイプが有効なコンテンツ タイプの配列要素のいずれかに含まれているかどうかを確認できるようにしたいと考えています。

Ruby でこれを行う最善の方法は何でしょうか?

解決策

それを実現するには複数の方法があります。 Enumerable#any? を使用して、一致するものが見つかるまで各文字列をチェックできます。

str = "alo eh tu"
['alo','hola','test'].any? { |word| str.include?(word) }

ただし、文字列の配列を正規表現に変換する方が速いかもしれません。

words = ['alo','hola','test']
r = /#{words.join("|")}/ # assuming there are no special chars
r === "alo eh tu"