2014-04-27 19 views
5

से कोई सबस्ट्रिंग है या नहीं, मैं यह जांचना चाहता हूं कि इस सरणी में कोई तत्व words = ["foo", "bar", "spooky", "rick james"] वाक्यांश sentence = "something spooky this way comes" वाक्यांश के सबस्ट्रिंग्स हैं या नहीं।जांचें कि किसी स्ट्रिंग में किसी सरणी

कोई मिलान है, तो गलत है अगर गलत है।

मेरे वर्तमान समाधान (काम करता है, लेकिन शायद अक्षम, मैं अभी भी सीख रहा हूँ रूबी):

is_there_a_substring = false 
words.each do |word| 
    if sentence.includes?(word) 
    is_there_a_substring = true 
    break 
    end 
end 
return is_there_a_substring 

उत्तर

17

आपका समाधान, कुशल है यह बस के रूप में अर्थपूर्ण नहीं है के रूप में रूबी आप हो सकते हैं। रूबी क्या आपको लगता है कि पाश के साथ कर रहे हैं व्यक्त करने के लिए Enumerable#any? तरीका प्रदान करता है:

words.any? { |word| sentence.include?(word) } 
+0

होगा प्यार गहरे लाल रंग का ... (4 मिनट जब में स्वीकार करेंगे टाइमर ऊपर है) –

+4

'शामिल है?' के रूप में 'शामिल है?' के रूप में 'शामिल है?' ruby2.0 – Radek

+1

में मेरे लिए काम नहीं करता रूबी में कोई 'शामिल नहीं है?' 'उत्तर' का उपयोग करने के लिए इस उत्तर को संपादित करने की आवश्यकता है – JEMaddux

4

एक अन्य विकल्प रेगुलर एक्सप्रेशन का उपयोग करने के लिए है:

if Regexp.union(words) =~ sentence 
    # ... 
end 
संबंधित मुद्दे