2014-02-06 57 views
0

我只是試圖找出是否有任何字符包括在數組中。所以我只是試圖包含範圍在包含功能,似乎不工作。我們可以在.include中包含範圍嗎? ruby

if @array.include?('a'..'z') then 
    puts "Doesnt have Permutation" 
else 
    puts "Have permutation" 
end 
+2

後輸入數據和預期的結果 –

回答

1

你想要

@array.any? { |c| ('a'..'z').include?(c) }

,如果你忘了grep

+0

注: '覆蓋?'比1.9.0中的'Range'更好' – roippi

+0

謝謝,@roippi。我同意你說Range#cover?比Enumerable#include?要好,因爲後者會檢查範圍內的所有內容。然而,當'include?'的參數是Fixnum或單個字符(如這裏)時,將使用僅考慮端點的Range#include?。因此,這並不重要。有關這方面的更多信息,請參閱今天發佈的[此問題](http://stackoverflow.com/questions/21608935/what-is-the-difference-between-rangeinclude-and-rangecover)以及我在評論中提供的鏈接在這個問題上。 –

6

您可能需要爲此使用Enumerable#grep

這裏有一些關於使用#grep的例子。

['w', '-', 12].grep('a'..'z') # => ["w"] 
[ 4 , :a, '^'].grep('a'..'z') # => [] 
['w', '-', 'e'].grep('a'..'z') # => ["w", "e"] 

這是你使用#grep的修改後的代碼:

ary = ['w', '-', 12] 
if ary.grep('a'..'z').empty? 
    puts "Doesnt have Permutation" 
else 
    puts "Have permutation" 
end  
# >> Have permutation 
+0

謝謝兄弟..完美的作品:) – user3358898

相關問題