2017-02-21 164 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 

我希望能夠做到這一切在一個單一的線,所以我已經離開了「情況下」的選項。

謝謝〜

+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