2014-02-06 4 views
0

나는 배열에 포함 된 문자가 있는지 여부를 찾으려고합니다. 그래서 그냥 작동하지 않는 포함 함수에 범위를 포함하려고했습니다. 당신에 대한 grep를 잊어 버린 경우.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) }

를 원하는 것입니다.

+0

N.B. 예상 1.9 + – roippi

+0

의'Range's에 대해'cover? '가'include?'보다 낫습니다. 감사합니다, @roippi. 범위 # 표지에 동의하겠습니까? 후자는 범위 내의 모든 것을 검사하기 때문에 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

관련 문제