Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

Ruby 문자열 연결과 보간 총정리: +, concat, <<부터 #{}까지 (예제 포함)

Ruby로 개발하다 보면 여러 문자열을 하나로 합쳐야 하는 작업을 자주 하게 됩니다. 그런데 어떻게 하면 될까요?

크게 두 가지 방법이 있습니다:

  1. Ruby 문자열 연결(Concatenation)
  2. Ruby 문자열 보간(Interpolation)

1. 문자열 연결(Concatenation)

연결은 다음과 같이 사용합니다:

a = "Nice to meet you"
b = ", "
c = "do you like blueberries?"

a + b + c

# "Nice to meet you, do you like blueberries?"

+ 연산자를 사용하면 한 문자열 뒤에 다른 문자열을 붙일 수 있습니다. 위 예제의 a + b + c처럼 연결하면 새로운 문자열이 생성됩니다.

참고로 굳이 변수를 사용하지 않아도 됩니다.

예제:

puts "I like" + " " + "chocolate"

# I like chocolate

+= 연산자로 문자열 붙이기

또 다른 방법은 += 연산자를 사용하는 것입니다.

예제:

a = ""

a += "test"
a += "test"
a += "test"

a
# "testtesttest"

빈 문자열에서 시작해서 계속 내용을 덧붙여 더 큰 문자열을 만드는 방식입니다.

그런데 이 방법에는 한 가지 문제가 있습니다...

바로 실행 속도가 매우 느리다는 점! 해결 방법을 바로 이어서 소개합니다.

2. concat 메서드로 효율적으로 합치기

Ruby의 concat 메서드를 사용하면 문자열을 더 효율적으로 병합할 수 있습니다.

사용 방법은 다음과 같습니다:

str = ""

str.concat("a")
str.concat("a")

str
# "aa"

concat이 빠른 이유는 새 문자열을 만들지 않고 기존의 str 객체 자체를 변경하기 때문입니다.

다만 +=만큼 깔끔해 보이지는 않죠... 다른 방법은 없을까요?

네, 있습니다! concat의 별칭(alias)인 << 메서드를 사용하면 됩니다.

참고: Ruby 2.4부터는 약간의 차이가 생겼습니다. concat은 여러 인수를 한 번에 전달할 수 있지만, <<는 한 번에 하나씩만 전달할 수 있습니다.

예제:

str = ""

str << "a"
str << "a"

이렇게 연속으로 사용할 수도 있습니다:

str = ""

str << "a" << "a"

3. 문자열이 아닌 값 다루기: TypeError 피하기

아직 한 가지 문제가 남아 있습니다. 문자열과 변수를 합치려는데 그 변수가 문자열이 아니라면 예상치 못한 결과가 나옵니다.

직접 확인해 볼까요:

"" + 1
# TypeError: no implicit conversion of Fixnum into String

"" << 1
# "\x01"

해결책은 무엇일까요? to_s 메서드를 사용해 해당 객체를 문자열로 변환하면 됩니다.

이렇게요:

"" + 1.to_s

물론 이런 식으로 코드를 작성하면 금방 지저분해지기 때문에, 더 좋은 도구가 준비되어 있습니다.

4. 문자열 보간(Interpolation) 사용법

보간(Interpolation)은 변수를 문자열 안에 삽입하는 강력한 기술입니다. 문자열을 일종의 '템플릿'처럼 활용할 수 있게 해줍니다.

예제를 살펴볼까요:

age  = 33
name = "Jesus"

"Hello, my name is #{name} & I'm #{age} years old."

문자열 앞에서 nameage 값을 설정하기만 하면 어떤 값이든 자유롭게 넣을 수 있습니다.

가장 좋은 점은 무엇일까요?

Ruby가 이 값들을 자동으로 문자열로 변환해 줍니다. 따라서 to_s를 직접 호출할 필요가 없습니다!

5. prepend로 문자열 앞에 붙이기

문자열을 합치는 또 다른 방법도 있습니다. 문자열 보간으로 새 문자열을 만들거나, <<concat으로 뒤에 붙이는 대신 앞에 붙이는 방식입니다.

예제:

str = ""

str.prepend("1")
str.prepend("2")
str.prepend("3")

# "321"

'append' 메서드도 있지 않을까 생각하신다면, 아쉽지만 없습니다. append는 배열(Array)에만 존재하는 메서드입니다.

마무리 정리

이번 글에서는 Ruby에서 문자열을 합치는 다양한 방법, 즉 연결(+, +=), concat, <<, prepend, 그리고 보간(#{})에 대해 배웠습니다. 상황에 맞는 방법을 선택하면 더 읽기 쉽고 성능 좋은 코드를 작성할 수 있습니다.

도움이 되셨다면 주변에 공유해 주세요 🙂

읽어주셔서 감사합니다.