2017-02-21 9 views
1

で複数の文字列一致:ルビー

if((user_input.include?('string_a') || 
    (user_input.include? ('string_b')) || 
    (user_input.include?('string_c'))) 
    && 
    user_input.include?('string_d_keyword')) 
    .... 
end # if 

は、複数の引数を取ることによって、「複数または文字列の一致」を簡略化し、このように見えることができます任意の関数はありますか?

if((user_input.multi_include_or?('string_a','string_b','string_c')) 
    && (user_input.include?('string_d_keyword'))) 
..... 
end # if 

私はこれらをすべて1行で行うことを望んでいるので、「ケース」のオプションを除外します。

感謝〜

+0

質問を誤読したのを見て私の答えを削除しました。私は 'user_input'が文字列の配列であると考えました。それが文字列であることは完全にはっきりしています。 –

答えて

2

(または):あなたの文字列はあなたができる配列である場合

if user_input.match? /string_a|string_b|string_c|string_d_keyword/ 
    … 
end 

Regex.unionを使用して対応する正規表現に変換してください:

if user_input.match? Regex.union(strings) 
    … 
end 
+0

ところで、私はそれが動作するようにこの形式を使用する必要があります: user_input.match(/ string_a | string_b /) thx again〜 – ioojimooi

0

使用アレイとany?あなたが|を使用して正規表現マッチを行うことができます

> user_input = "string_a" 
=> "string_a" 
> ["asd","string_a"].any? {|a| user_input.include? a} 
=> true 
+1

downvoteとは何ですか?このソリューションに何か問題がありますか?返信ありがとうございます。 – Coolness