String에는 문자열을 조작하는 데 사용할 수 있는 여러 메서드가 있어요.
이 메서드들은 문자열 자체에서 호출하며, 문자열에 여러 작업을 수행하기 위해 자주 함께 연결해서 사용해요.
다음은 가장 흔히 쓰이는 메서드 몇 가지를 정리한 목록이에요.
전체 메서드 목록은 String API 문서에서 확인할 수 있어요.
upcase 메서드는 모든 문자를 대문자로 변환한 새 문자열을 반환해요.
"hello".upcase
# => "HELLO"
downcase 메서드는 모든 문자를 소문자로 변환한 새 문자열을 반환해요.
"HELLO".downcase
# => "hello"
Crystal에는 문자열의 일부를 바꾸는 메서드가 있어요.
이들은 sub(치환)와 gsub(전역 치환)라고 해요.
이 메서드들은 첫 번째 인자로 문자열, 문자, 정규식을 받을 수 있고, 두 번째 인자로 문자열이나 문자를 받을 수 있어요.
첫 번째 인자는 바꿀 문자열의 일부이고, 두 번째 인자는 대신 넣을 값이에요.
Char와 정규식은 이후 개념에서 설명해요.
sub 메서드는 첫 번째 인자가 처음 나타나는 부분을 두 번째 인자로 바꿔요.
"hello".sub("l", "r")
# => "herlo"
gsub 메서드는 sub와 같은 방식으로 동작하지만, 첫 번째 인자가 나타나는 모든 부분을 두 번째 인자로 바꿔요.
"hello".gsub("l", "r")
# => "herro"
chomp와 strip은 문자열에서 원하지 않는 문자를 제거할 때 사용할 수 있어요.
chomp 메서드는 기본적으로 문자열 끝의 \r, \n, \r\n 문자를 제거해요.
인자를 전달해서 호출하면, 문자열 끝에서 주어진 값을 제거해요.
문자열 끝에 그 값이 있을 경우에만요.
"hello\n".chomp
# => "hello"
"hello".chomp("llo")
# => "he"
기본적으로 strip 메서드는 문자열의 앞과 뒤에 있는 모든 공백을 제거해요.
인자를 전달해서 호출하면, 문자열의 앞과 뒤에서 그 인자를 제거해요.
문자열의 앞이나 뒤에 그 값이 있을 경우에만요.
" hello ".strip
# => "hello"
index 메서드는 문자열에서 문자의 인덱스를 찾을 때 사용할 수 있어요.
index 메서드는 인자로 String, Char, 정규식을 받아요.
검색을 시작할 인덱스를 지정하는 선택적 두 번째 인자를 받을 수도 있어요.
index 메서드는 인자가 처음 나타나는 위치의 인덱스를 반환해요.
"hello".index("l")
# => 2
"hello".index("l", 3)
# => 3
delete_at 메서드를 사용하면 문자열에서 문자 하나를 제거할 수 있어요.
delete_at 메서드는 인덱스를 인자로 받아 그 인덱스에 있는 문자를 제거해요.
"hello".delete_at(0)
# => "ello"
"hello".delete_at(3)
# => "helo"
insert 메서드를 사용하면 특정 인덱스에 문자열을 삽입할 수 있어요.
insert 메서드는 첫 번째 인자로 인덱스를, 두 번째 인자로 문자열을 받아요.
insert 메서드는 두 번째 인자가 해당 인덱스에 삽입된 새 문자열을 반환해요.
"hello".insert(0, "h")
# => "hhello"
"hello".insert(3, "l")
# => "helllo"
이 연습 문제에서는 고등학교 커플이 소셜 미디어에서 사랑을 고백할 수 있도록, 두 사람의 이니셜이 들어간 ASCII 하트를 만들어 볼 거예요.
❤ J. + M. ❤
HighSchoolSweetheart.clean_up_name 메서드를 구현해요.
이름을 받아서 - 문자를 모두 제거하고 공백으로 바꿔야 해요.
이름의 앞뒤에 있는 공백도 제거해야 해요.
HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"
HighSchoolSweetheart.first_letter 메서드를 구현해요.
이름을 받아서 첫 글자를 반환해야 해요.
이전 단계에서 정의한 HighSchoolSweetheart.clean_up_name을 다시 사용해야 해요.
HighSchoolSweetheart.first_letter("Jane")
# => "J"
HighSchoolSweetheart.initial 메서드를 구현해요.
이름을 받아서 첫 글자를 대문자로 바꾸고 마침표를 붙여 반환해야 해요.
이전 단계에서 정의한 HighSchoolSweetheart.first_letter를 다시 사용해야 해요.
HighSchoolSweetheart.initial("Robert")
# => "R."
HighSchoolSweetheart.pair 메서드를 구현해요.
이름 두 개를 받아서 양옆에 이모지 하트를 붙인 이니셜을 반환해야 해요.
이전 단계에서 정의한 HighSchoolSweetheart.initial을 다시 사용해야 해요.
HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B. + R. ❤"
Exercism에 가입하고 Crystal 트랙을 개념 26개연습 문제 142개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.