2016-09-22 1 views
0

이 코드에서 단어의 마지막 모음을 제거하려고합니다. 내가 코드를 실행하면, 나는이이 코드 유일한 glith하지 않습니다 확신하지만, 배열과 Fixnum이라는 비교는 (하면 ArgumentError가). 도와주세요 실패 "라는 인수 오류!`<= ': Fixnum과 배열 비교 실패 (ArgumentError)

VOWELS = %w(a e i o u) 

def hipsterfy(string) 

    new_string = string.split('') 

    reversed_string = new_string.reverse 

    i = 0 

    while i <= reversed_string 

    if VOWELS.include?[i] 

     reversed_string[i] = ('') 

    i += 1 
    end 
    reversed_string 
    end 

    reversed_string.reverse 

end 
+0

힌트 : 모음이 다 떨어지면 'i'가 증가합니까? 정규 표현식이나 적어도 ['tr'] (https://ruby-doc.org/core-2.2.0/String.html#method-i-tr) 메소드도 파헤쳐 야합니다. – tadman

+0

정확한 들여 쓰기가 거의 확실하게 도움이 될 것입니다. – pjs

+0

그것은 귀하의 질문에 대답하지 않지만, 귀하의 문제는 [이 질문에 설명되어 있습니다] (http://stackoverflow.com/questions/39628583/how-do-i-remove-the-last-vowel-in-a- 문자열 - 루비). –

답변

1

을받은 오류 당신 reversed_array가 배열이기 때문에

while i <= reversed_string 

아마

while i < reversed_string.length 

해야하고, 당신은 아마에 대해 i을 비교하려면 : 당함 여기에서왔다 그것은 length입니다. 당신이

if VOWELS.include?[i] 

을 테스트 할 때 VOWELS 상수는 배열 인덱스가 포함 된 경우

1

당신이 확인하고 있습니다. 대신 문자열에서 그 시점의 편지를보고 싶습니까?

+0

정말 도움이되는 와우! 감사! –

0

첫 번째 모음을 반복하자마자 루프를 중지하려면 if 문 다음에 "break"문이 있어야합니다. 그러면 다음 모음으로 넘어 가지 않습니다. 문제 해결됨.