루비 문자열 변환: upcase/downcase (대소문자 변경)와 strip (공백 제거) 마스터하기
🎯 이번 시간 학습 목표
지난 시간에는 루비 문자열의 길이 확인(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`는 원본을 바꾸지 않아요!
위 예제들에서 upcase
나 downcase
를 사용해도 원래 message
나 loud_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?
) 확인하는 방법과, 문자열의 특정 부분을 콕 집어내는 인덱싱([]
) 기초에 대해 알아보겠습니다. 더욱 흥미로운 내용이 기다리고 있으니 기대해주세요! 😉