if
/else
명령문을 사용하여 프로그램을 제어함으로써, 이제 여러분은 사용자의 다른 입력값을 바탕으로 각기 다른 결과값에 이르도록 만들 수 있습니다.
이번 프로젝트에서는 흐름 제어와 루비의 몇 가지 새로운 문자열 메소드를 조합하여 "s"
를 "th"
로 바꾸는 연습을 해봅시다.
제일 처음으로, 사용자들에게 입력값을 요구하는 문장을 출력하도록 print
명령문을 작성하세요. 그런 다음, gets.chomp
를 사용하여 입력값을 받아 변수에 저장하세요.
1 2 | print "input please: " user_input = gets.chomp | cs |
사용자의 입력값에서 대문자와 소문자를 모두 고려해야 하므로, "S"
와 "s"
두 경우를 전부 다뤄야 합니다. 이를 위해 각각의 if
/else
명령문을 만들어도 되지만, 입력값을 모두 소문자로 변환해주는 .downcase!
메소드를 사용해도 됩니다. 이 메소드를 사용함으로써 우리는 오직 "s"
만 찾으면 되는 거죠.
1 2 3 | print "input please: " user_input = gets.chomp user_input.downcase! | cs |
좋습니다! 간단한 흐름 제어를 추가할 시간입니다.
분기(branch)의 절반을 차지하는 if 부분에서는 사용자의 입력값에 소문자
"s"가 포함되어 있는지 여부를 확인할 것입니다. 루비의
.include?메소드를 사용하여 이를 확인할 수 있습니다. 이 메소드는 찾는 문자열이 있을 경우 결과로
true값을, 그렇지 않을 경우
false값을 반환합니다. (일반 규칙에 따라,
?기호로 끝나는 루비의 메소드들은 결과로 불린값
true또는
false`를 반환합니다.)
문법은 다음과 같습니다:
if string_to_check.include? "substring(찾을 문자열)"
위의 코드에서 stringstocheck는 찾을 범주가 되는 문자열(혹은 문자열이 담긴 변수), 그리고 substring은 찾을 문자열을 나타냅니다.
좋습니다! 이제 작성해둔 if
명령문을 완성시켜 봅시다.
문자열에서 "s"
를 발견할 때마다, 루비가 해당 "s"
를 모두 "th"
로 바꾸도록 만들어야 합니다. 이는 .gsub!
메소드를 사용하여 해결할 수 있는데요, global substitution, 즉 전역치환이라는 뜻입니다.
문법은 다음과 같습니다:
string_to_change.gsub!(/s/, "th")
위 코드의 /s/
부분에서 문자 주변을 따옴표 대신 슬래쉬로 감싼 이유는 이후 수업에서 설명해 드리겠습니다. 주의: gsub!
부분과 소괄호 부분 사이에 공백을 둘 수 없습니다.
기억하세요, 메소드의 끝에 !
를 포함하여 루비가 문자열 원본을 수정하도록 만들어야 합니다.
1 2 3 4 5 6 | print "input please: " user_input = gets.chomp user_input.downcase! if user_input.include? "s" user_input.gsub!(/s/, "th") end | cs |
어려운 부분은 끝났습니다! 이제 남은 건 문자열에서 "s"를 하나도 발견하지 못했을 때, 사용자들에게 이를 알리기만 하면 됩니다.
1 2 3 4 5 6 7 8 | print "input please: " user_input = gets.chomp user_input.downcase! if user_input.include? "s" user_input.gsub!(/s/, "th") else print "no exist" end | cs |
마지막 문자열을 사용자들에게 보여줄 차례입니다. 이를 위해선 이전에 배웠던 string interpolation을 사용하면 됩니다:
my_string = "muchachos"
print "Adios, #{my_string}!"
# ==> "Adios, muchachos!"
1 2 3 4 5 6 7 8 9 10 | print "input please: " user_input = gets.chomp user_input.downcase! if user_input.include? "s" user_input.gsub!(/s/, "th") else print "no exist" end puts "Your string is: #{user_input}" | cs |
Ruby 실습하기 : https://www.codecademy.com/en/tracks/ruby-ko
'Back-End > Ruby' 카테고리의 다른 글
[Ruby] Codecademy - 5. 반복문(Loops) & 반복자(Iterators) (0) | 2018.02.13 |
---|---|
[Ruby] Codecademy - 3. 루비에서의 흐름제어(Control Flow) (0) | 2018.02.13 |
[Ruby] Codecademy - 2. Formatter 안에 양식 넣기 (0) | 2018.02.10 |
[Ruby] Codecademy - 1. Ruby 입문 (0) | 2018.02.10 |