루비 문자열 기초: 길이 확인(length), 비었는지 검사(empty?), 결합(+) 완벽 정리

🎯 이번 시간 학습 목표

이번 시간에는 루비(Ruby) 프로그래밍의 가장 기본적인 데이터 타입 중 하나인 문자열(String)을 다루는 첫걸음을 내딛습니다. 이 글을 통해 여러분은 다음을 할 수 있게 됩니다.

  • ✅ 문자열의 길이를 확인하는 length 메소드 사용하기
  • ✅ 문자열이 비어 있는지 검사하는 empty? 메소드 활용하기
  • + 연산자를 이용하여 간단하게 문자열들을 하나로 합치기

코드를 직접 따라 치면서 루비 문자열의 기초를 탄탄하게 다져봅시다! 🚀


📏 문자열 길이 확인: length

문자열이 몇 개의 글자로 이루어져 있는지 알고 싶을 때 length 메소드를 사용합니다. 마치 자로 길이를 재는 것과 같아요! 😉

message = "Hello, Ruby!"
puts message.length # 출력 결과: 12

empty_string = ""
puts empty_string.length # 출력 결과: 0

space_string = " " # 공백도 글자 수에 포함됩니다!
puts space_string.length # 출력 결과: 1

위 예제처럼 length 메소드는 문자열 변수 뒤에 점(.)을 찍고 호출하면 해당 문자열의 글자 수를 숫자로 반환해 줍니다. 공백(space)도 하나의 글자로 취급된다는 점, 잊지 마세요!

꿀팁🍯:

length 메소드는 한글과 같은 다국어 문자(멀티바이트 문자)의 길이도 정확하게 계산해 줍니다.

korean_message = "안녕하세요"
puts korean_message.length # 출력 결과: 5

❓ 문자열이 비었는지 확인: empty?

때로는 문자열 안에 내용이 있는지, 아니면 그냥 빈 문자열인지 확인해야 할 필요가 있습니다. 이럴 때 사용하는 것이 바로 empty? 메소드입니다. 이름 그대로 "비어있니?"라고 물어보는 거죠.

empty? 메소드는 문자열의 길이가 0이면 true(참)를, 그렇지 않으면 false(거짓)를 반환합니다.

greeting = "Hi"
puts greeting.empty? # 출력 결과: false (비어있지 않음)

blank_string = ""
puts blank_string.empty? # 출력 결과: true (비어있음)

# 주의! 공백만 있는 문자열은 비어있는 것이 아닙니다.
space_string = " "
puts space_string.empty? # 출력 결과: false
주의사항⚠️:

empty?는 오직 길이가 0인 문자열에만 true를 반환합니다. 공백, 탭, 줄바꿈 문자 등이 하나라도 포함되어 있다면 false를 반환한다는 점을 꼭 기억하세요! (나중에 배울 strip 메소드와 함께 사용하면 공백만 있는 경우를 처리할 수 있습니다.)


🔗 문자열 합치기: + 연산자

여러 개의 문자열 조각들을 하나로 이어 붙이고 싶을 때는 가장 간단하게 + 연산자를 사용할 수 있습니다. 숫자 덧셈과 비슷하게 생겼지만, 문자열에서는 '결합'의 의미로 사용됩니다.

first_name = "루비"
last_name = "마스터"

# 중간에 공백 문자열 " "을 추가하여 자연스럽게 만듭니다.
full_name = first_name + " " + last_name
puts full_name # 출력 결과: "루비 마스터"

# 변수와 문자열 리터럴(코드에 직접 쓴 값)을 섞어서 사용할 수도 있습니다.
welcome_message = "어서오세요, " + full_name + "님!"
puts welcome_message # 출력 결과: "어서오세요, 루비 마스터님!"
핵심 요약:

+ 연산자를 사용하면 기존 문자열들이 변경되는 것이 아니라, 합쳐진 **새로운 문자열 객체**가 만들어집니다.

🤔 혹시 TypeError: no implicit conversion of [다른 타입] into String 오류가 발생했나요?
이 오류는 문자열과 다른 데이터 타입(예: 숫자, 배열 등)을 + 연산자로 직접 합치려고 할 때 발생합니다. 루비는 자동으로 타입을 변환해주지 않기 때문이죠.
해결 방법은 간단합니다! 다른 타입의 데이터를 to_s 메소드를 사용해 문자열로 명시적으로 변환한 후 합치면 됩니다.
level = 5
# puts "현재 레벨: " + level # TypeError 발생!
puts "현재 레벨: " + level.to_s # 출력 결과: "현재 레벨: 5"

score = 100.5
puts "점수: " + score.to_s # 출력 결과: "점수: 100.5"

✨ 레벨업! 문자열 기본기 장착 완료! ✨

축하합니다! 🎉 이제 여러분은 루비 문자열의 길이를 재고(length), 비어있는지 확인하며(empty?), 여러 문자열을 하나로 합치는(+) 기본적인 기술을 습득했습니다.

아주 간단해 보이지만, 앞으로 더 복잡한 문자열 처리를 위한 중요한 첫걸음입니다. 꾸준히 연습해서 익숙해지세요!

다음 시간에는 문자열의 대소문자를 바꾸고(upcase, downcase), 불필요한 앞뒤 공백을 제거하는(strip) 방법에 대해 알아보겠습니다. 기대해주세요! 😉