개요
이번 블로그에서는 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|b | a, 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에서 문자열을 다루는 다양한 방법에 대해서 알아보았습니다. 정규 표현은 다른 언어에서도 많이 활용되는 부분이므로 잘 기억해 두면, 많은 곳에서 활용할 수 있습니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.