Ruby의 문자열

2020-12-16 hit count image

Ruby에서 문자열을 다루는 방법에 대해서 살펴봅니다.

개요

이번 블로그에서는 Ruby에서 문자열을 사용함에 있어 도움이 되는 방법들을 소개하려고 합니다.

문자열 검색

Ruby에서 문자열을 검색할 때는 index 메서드를 사용합니다.

puts "ABCD".index("C")
# 2

검색한 문자열이 해당 문자열에 존재하는 경우 해당 문자열에 위치를 반환하고, 존재하지 않는 경우 nil을 반환합니다.

문자열 치환

문자열에 각 문자를 index로 참조하고 대입할 수 있습니다.

a = "Apple Juice"
a[0] = "O"
a[1] = "r"
a[2] = "a"
a[3] = "n"
a[4] = "ge"
puts a
# Orange Juice

위에서도 알 수 있듯이, a[4] = "ge"처럼 문자열의 길이가 달라도 문자열을 치환할 수 있습니다.

정규 표현

다른 언어와 같이 Ruby에서도 정규 표현식을 사용하여 문자열을 검색할 수 있습니다.

메타 문자

정규 표현에서는 메타 문자(특수한 의미를 가진 문자)를 사용하여 정규 표현식을 만듭니다.

메타 문자설명
[][]안에 있는 문자 중 어느 한 문자
.임의의 한 문자
*직전 표현을 0번 이상 반복
+직전 표현을 1번 이상 반복
?직전 표현을 0번 또는 1번 반복
()정규 표현 그룹
a|ba, b 중 어느 하나
\s공백 문자
\w영숫자나 언더바(_)
\d숫자(0~9)
^맨 앞
$맨 뒤

패턴 매치

정규 표현식을 사용하여 문자열을 검색할 수 있습니다.

puts /R.by/ =~ "Let's study Ruby!"
# 12

문자열 검색 함수인 index와 마찬가지로 패턴이 일치하면, 일치한 패턴의 index를 반환하고, 패턴이 매치되지 않으면 nil을 반환합니다.

Regexp 클래스

정규 표현을 Regexp 클래스의 new메서드를 사용하여 정규 표현 오브젝트를 생성할 수 있습니다.

re = Regexp.new("R.by")
puts re =~ "Let's study Ruby!"
# 12

정규 표현 오브젝트

정규 표현 오브젝트를 사용하면 정규 표현식을 더욱 효과적으로 활용할 수 있습니다.

  • 정규 표현 오브젝트 x: x를 사용하면 정규 표현식 안에 #을 통해 주석을 추가할 수 있습니다.

      re =/R.by # Search Ruby/x
      puts re =~ "Let's study Ruby!"
      # 12
    
  • 정규 표현 오브젝트 i: i를 사용하면 대소문자 구분없이 문자열을 찾을 수 있습니다.

      re =/r.by/i
      puts re =~ "Let's study Ruby!"
      # 12
    

심벌

심벌(symbol)은 임의의 문자열과 일대일로 대응하는 값을 나타내는 클래스입니다.

a = :apple
b = :apple
c = :orange

puts a == b # true
puts a == c # false

a와 b는 같은 이름의 심벌이므로 같은 오브젝트를 나타내고 있습니다.

심벌과 문자열

심벌 오브젝트에 to_s를 사용하면 문자열로 치환할 수 있으며, 문자열에 intern을 사용하면 심벌로 치환할 수 있습니다.

a = :apple
b = "apple"

puts a # apple
puts b # apple
puts a == b # false
puts a.to_s == b # true
puts a == b.intern # true

심벌의 활용

심벌은 수치와 똑같은 것이므로 문자열을 사용하는 것보다 메모리나 실행 속도면에서 효율적인 경우가 많습니다.

def triangle(value)
  value[:a] + value[:b] + value[:c]
end

test = {:a => 5, :b => 2, :c => 5}
puts triangle(test)
# 12

심벌은 보통 해시의 키로 많이 사용됩니다.

퍼센트 기법

문자열은 보통 큰따옴표(“)나 작은따옴표(‘)로 묶어서 나타내지만, % 기법을 사용하여 나타낼 수도 있습니다.

puts %{This string has " character}
# This string has " character
puts %Q{This string has " character}
# This string has " character
puts %q{This string has ' character}
# This string has ' character

또한 %w를 사용하여 스페이스로 구분된 문자열을 배열로 변환할 수 있습니다.

puts %w(apple orange banana)
# apple
# orange
# banana

완료

이것으로 Ruby에서 문자열을 다루는 다양한 방법에 대해서 알아보았습니다. 정규 표현은 다른 언어에서도 많이 활용되는 부분이므로 잘 기억해 두면, 많은 곳에서 활용할 수 있습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts