2014-12-20 5 views
-1

I가 잘루비 - 하나 이상 포함 추가에 if 문

if user_input.include? "s" 
    user_input.gsub!(/s/ "th") 
else 
    print "Nothing to change" 
end 

하지만 같은 다른 include를 추가 할 때 그래서이 elsif 내가 추가하려면 어떻게 이것들을 인식하지 못합니다 작동 다음 코드 함께 포함합니까?

if user_input.include? "s" 
    user_input.gsub!(/s/ "th") 
elsif user_input.include? "cee" 
    user_input.gsub!(/cee/ "th") 
else 
    print "Nothing to change" 
end 
+0

당신이 예를 들어 입력/출력을 추가 할 수 있습니다 : 당신이 그렇게 같은 단일 gsub를 사용하는 것이 특정 사용 사례를 들어

, 나는 제안? –

답변

3

이것은 if else 문의 실행 흐름 때문입니다. 하면 아무것도 변경하지 않는 경우, 당신은 단지 다음과 같이 귀하의 예제를 작성할 수

if user_input.include?('s') or user_input.include?('cee') 
    user_input.gsub!(/s/,"th").gsub!(/cee/,"th") 
else 
    print "Nothing to change" 
end 
+0

솔루션 및 설명 주셔서 감사합니다 :) –

2

귀하의 코드는 오류 보여

SyntaxError: unexpected ')', expecting keyword_end 

당신은 GSUB의 쉼표를 잊어을

if user_input.include? "s" 
    user_input.gsub!(/s/, "th") 
elsif user_input.include? "cee" 
    user_input.gsub!(/cee/, "th") 
else 
    print "Nothing to change" 
end 

편집 : 둘 다 교체를 확인하려면 , 당신은 변경해야

old_value = user_input 
if user_input.include? "s" 
    user_input.gsub!(/s/, "th") 
end 
if user_input.include? "cee" 
    user_input.gsub!(/cee/, "th") 
end 

if user_input == old8value 
    print "Nothing to change" 
end 
+0

고마워요. 오류를 분류했지만 여전히 "s"의 포함을 무시하고 "cee"만 대체합니다. –

+0

둘 다 바꾸고 싶습니까? 너는 이것을 좋아할 수 없다. 다른 말은 "다른 경우"를 의미합니다. 첫 번째 문장이 완료되면 다른 문장은 완성되지 않습니다. – Fabrice31

+0

각 쿼리에 대해 두 개의 개별 if 문이 필요하다는 점을 이해하시기 바랍니다. –

5

nil 반환 gsub! 때문에이 블록 'elseif 문'실행되지 않습니다 일치 '가'...의 조건 : 일단

unless user_input.gsub!(/s|cee/ "th") 
    print "Nothing to change" 
end 
1

첫 번째는 if이고, 나머지는 건너 뜁니다.

regexp = /s|cee/ 

if string.match(regexp) 
    string.gsub!(regexp, "th") 
else 
    "Nothing to gsub!" 
end