루비

루비 문자열 변환: upcase/downcase (대소문자 변경)와 strip (공백 제거) 마스터하기

프로그래밍 멘토 2025. 3. 31. 09:00

🎯 이번 시간 학습 목표

지난 시간에는 루비 문자열의 길이 확인(length), 비어있는지 검사(empty?), 그리고 간단한 결합(+) 방법을 배웠습니다. 이번 시간에는 문자열의 스타일을 바꾸고 정리하는 두 가지 강력한 기술을 익혀보겠습니다!

  • upcase: 문자열 안의 모든 영어 알파벳을 대문자로 변환하기
  • downcase: 문자열 안의 모든 영어 알파벳을 소문자로 변환하기
  • strip: 문자열의 앞뒤에 있는 불필요한 공백들을 깔끔하게 제거하기

이 메소드들을 사용하면 데이터를 정제하거나 사용자의 입력을 일관된 형식으로 처리하는 데 아주 유용하답니다. 자, 그럼 코드를 통해 직접 확인해볼까요? 🚀

✨ 오늘 배울 내용 미리보기

함수/메소드 설명 간단 예시
upcase 문자열의 모든 영문자를 대문자로 변환합니다. "hello".upcase"HELLO"
downcase 문자열의 모든 영문자를 소문자로 변환합니다. "WORLD".downcase"world"
strip 문자열 앞뒤의 공백(whitespace)을 제거합니다. " ruby ".strip"ruby"
📌 위 표의 예시는 가장 기본적인 사용법을 보여줍니다. 각 메소드의 자세한 활용법은 아래에서 더 알아볼게요!

📢 소리 질러! 아니, 대문자로 바꿔! upcase

문자열 내의 모든 영어 알파벳 소문자를 대문자로 바꾸고 싶을 때 upcase 메소드를 사용합니다. 마치 확성기로 외치는 것처럼 문자를 키워주는 느낌이죠! 😎

message = "Hello, Ruby World!"
puts message.upcase # 출력 결과: "HELLO, RUBY WORLD!"

# 이미 대문자인 글자는 그대로 유지됩니다.
mixed_case = "TeSt MeSsAgE"
puts mixed_case.upcase # 출력 결과: "TEST MESSAGE"

# 숫자나 특수문자, 한글 등 알파벳이 아닌 문자는 영향을 받지 않습니다.
non_alpha = "루비 123 go!"
puts non_alpha.upcase # 출력 결과: "루비 123 GO!"

🤫 쉿! 소문자로 속삭여봐요. downcase

반대로, 문자열 내의 모든 영어 알파벳 대문자를 소문자로 바꾸고 싶다면 downcase 메소드를 사용합니다. 조용히 속삭이듯 문자를 작게 만들어줘요.

loud_message = "I AM ROBOT!"
puts loud_message.downcase # 출력 결과: "i am robot!"

# 이미 소문자인 글자는 그대로 유지됩니다.
mixed_case = "TeSt MeSsAgE"
puts mixed_case.downcase # 출력 결과: "test message"

# 마찬가지로 알파벳이 아닌 문자는 그대로 유지됩니다.
non_alpha = "RUBY 마스터 100점!"
puts non_alpha.downcase # 출력 결과: "ruby 마스터 100점!"
❗ 잠깐! `upcase`와 `downcase`는 원본을 바꾸지 않아요!

위 예제들에서 upcasedowncase를 사용해도 원래 messageloud_message 변수에 저장된 문자열 값 자체는 변하지 않습니다. 이 메소드들은 변환된 **새로운 문자열**을 만들어서 돌려줄 뿐입니다.

greeting = "Hi There"
new_greeting = greeting.upcase

puts greeting      # 출력 결과: "Hi There" (원본은 그대로)
puts new_greeting  # 출력 결과: "HI THERE" (새로운 문자열)

만약 원본 변수의 값 자체를 바꾸고 싶다면, 메소드 이름 뒤에 느낌표(!)를 붙인 upcase! 또는 downcase!를 사용해야 합니다. 하지만 이 방법은 원본 데이터를 직접 수정하므로 사용할 때 주의가 필요합니다!

# 주의해서 사용하세요!
my_name = "ruby"
my_name.upcase! # 원본 문자열 자체가 변경됩니다!
puts my_name    # 출력 결과: "RUBY"

✨ 불필요한 군살(공백) 제거! strip

사용자 입력이나 파일에서 읽어온 데이터에는 눈에 잘 보이지 않는 앞뒤 공백이 포함되어 있는 경우가 많습니다. 이런 불필요한 공백은 비교나 처리를 할 때 문제를 일으킬 수 있죠. strip 메소드는 문자열의 **시작과 끝**에 있는 공백(whitespace) 문자들을 깔끔하게 제거해 줍니다.

여기서 말하는 공백(whitespace)은 일반적인 스페이스( )뿐만 아니라 탭(\t), 줄바꿈(\n, \r), 세로 탭(\v), 폼 피드(\f) 등 눈에 보이지 않는 문자들을 포함합니다.

padded_string = "   안녕하세요!   "
puts padded_string.strip # 출력 결과: "안녕하세요!"

leading_space = "\t\t앞에만 공백"
puts leading_space.strip # 출력 결과: "앞에만 공백"

trailing_space = "뒤에만 공백\n\n"
puts trailing_space.strip # 출력 결과: "뒤에만 공백"

# 앞뒤 공백만 제거되고, 중간 공백은 그대로 유지됩니다!
spaced_words = "   단어   사이   공백   "
puts spaced_words.strip # 출력 결과: "단어   사이   공백"
꿀팁🍯:

만약 문자열의 앞쪽 공백만 제거하고 싶다면 lstrip (left strip), 뒤쪽 공백만 제거하고 싶다면 rstrip (right strip) 메소드를 사용할 수도 있습니다.

text = "  중요한 내용  \n"
puts text.lstrip # 출력 결과: "중요한 내용  \n" (앞 공백만 제거)
puts text.rstrip # 출력 결과: "  중요한 내용" (뒤 공백만 제거)

strip 메소드 역시 upcase, downcase처럼 원본 문자열을 변경하지 않고 공백이 제거된 새로운 문자열을 반환합니다. 원본을 직접 변경하려면 strip!, lstrip!, rstrip!을 사용하면 됩니다. (역시나 사용에 주의!)

🤔 혹시 'undefined method 'strip' for nil:NilClass' 같은 오류가 발생했나요?
이 오류는 nil(값이 없음) 상태인 변수에 대해 메소드를 호출하려고 할 때 발생합니다. upcase, downcase, strip 등 모든 메소드가 마찬가지입니다. 메소드를 사용하기 전에 변수에 유효한 문자열 값이 들어있는지 확인하는 습관을 들이는 것이 좋습니다!

✨ 문자열 스타일링 스킬 +1! ✨

짝짝짝! 🎉 이제 여러분은 루비 문자열의 대소문자를 자유자재로 바꾸고(upcase, downcase), 지저분한 앞뒤 공백을 깔끔하게 정리하는(strip) 능력을 갖추게 되었습니다!

이 메소드들은 특히 사용자 입력을 처리하거나 외부 데이터를 가져와 사용할 때 정말 유용하게 쓰입니다. 예를 들어, 사용자 아이디를 모두 소문자로 통일하거나, 검색어의 앞뒤 공백을 제거하는 등의 작업에 활용될 수 있죠.

다음 시간에는 문자열 안에 특정 내용이 포함되어 있는지(include?), 특정 문자로 시작하거나 끝나는지(start_with?, end_with?) 확인하는 방법과, 문자열의 특정 부분을 콕 집어내는 인덱싱([]) 기초에 대해 알아보겠습니다. 더욱 흥미로운 내용이 기다리고 있으니 기대해주세요! 😉