2015-01-20 4 views
0

문자열의 모든 모음에 대해 모음의 양을 인쇄하려고합니다. 모음의 모든 인스턴스를 새로운 배열에 푸시면, 배열 + 1의 길이가 답이됩니다. 내 추동이 실패하는지 모르겠다. 어떤 도움을 주시면 감사하겠습니다. 루비에 더 익숙해 일단단일 배열의 모든 값이 문자열에 존재하는지 확인하십시오.

def count_vowels(string) 
    arr = ['a', 'e', 'i', 'o', 'u'] 
    letters = string.split("") 
    letters.each do |x| 
    if x == arr.any? 
     vowels = vowels.push(x) 
     print vowels.length 
    else 
     print 0 
    end 
end 

답변

1

문제는 arr.any?으로 생각하면됩니다. 문서화 따르면

:

지정된 블록 집합의 각 요소를 전달. 블록 이제까지 거짓보다 크거나 대신

전무 다른 값을 반환하는 경우 true를 반환 방법, 당신은 문자열에서 모음을 계산하기위한 유용한 방법의 말하기 if arr.include? x

+0

시간과 도움에 감사드립니다. 응답을 감사하십시오. –

+0

이 답변이 도움이된다면, 수락하거나 @daremkd의 대답을 수락하는 것을 고려하십시오. – vincentleest

3

, 당신보다 훨씬 더 유용한 방법이 있습니다 실현할 것 "각"당신은 문자열에서 모음을 계산처럼, 달성하려고하는 것들에 대한. 마찬가지로 예를 들어 :

my_string = 'Hey there' 

def how_many_vowels_has(this_string) 
    this_string.scan(/[aeiou]/).size 
end 

p how_many_vowels_has(my_string) #=> 3 

하거나 문자열 자체에 대한 문자열 # 수 호출 할 수 있습니다

내가 어떻게 Enumerable에서 작품, 범위에 대한 학습에 더 많은 시간을 할애 할 필요가 무엇을 볼 수에서
my_string = 'Hey there' 
p my_string.count('aeiou') #=> 3 

과 루비의 모든 것이 객체라는 사실. 또한 언어가 제공하는 구조를 사용하여 "루비"방식으로 문제를 해결합니다.

+1

를 사용하려면, 이것은 우리가 무엇을 [this_string.count ('aeiou') # => 3'에 대한 [String # count] (http://www.ruby-doc.org/core-2.2.0/String.html#method-i-count) –

+0

이 답변도 추가하여 내 대답을 편집했습니다. 감사합니다. @Jordan – daremkd

+0

사실, this_string.downcase.count ('aeiou')'또는 'this_string.count ('AaEeIiOoUu ')'중 하나 여야합니다. 내 잘못이야. –

관련 문제