트랙
/
Crystal
Crystal
/
연습 문제
/
고등학교 연인
고등학교 연인

고등학교 연인

학습 연습 문제

소개

String에는 문자열을 조작하는 데 사용할 수 있는 여러 메서드가 있어요.
이 메서드들은 문자열 자체에서 호출하며, 문자열에 여러 작업을 수행하기 위해 자주 함께 연결해서 사용해요.

다음은 가장 흔히 쓰이는 메서드 몇 가지를 정리한 목록이에요. 전체 메서드 목록은 String API 문서에서 확인할 수 있어요.

String#upcase & String#downcase

upcase 메서드는 모든 문자를 대문자로 변환한 새 문자열을 반환해요.

"hello".upcase
# => "HELLO"

downcase 메서드는 모든 문자를 소문자로 변환한 새 문자열을 반환해요.

"HELLO".downcase
# => "hello"

String#sub & String#gsub

Crystal에는 문자열의 일부를 바꾸는 메서드가 있어요. 이들은 sub(치환)와 gsub(전역 치환)라고 해요.

이 메서드들은 첫 번째 인자로 문자열, 문자, 정규식을 받을 수 있고, 두 번째 인자로 문자열이나 문자를 받을 수 있어요. 첫 번째 인자는 바꿀 문자열의 일부이고, 두 번째 인자는 대신 넣을 값이에요. Char와 정규식은 이후 개념에서 설명해요.

sub 메서드는 첫 번째 인자가 처음 나타나는 부분을 두 번째 인자로 바꿔요.

"hello".sub("l", "r")
# => "herlo"

gsub 메서드는 sub와 같은 방식으로 동작하지만, 첫 번째 인자가 나타나는 모든 부분을 두 번째 인자로 바꿔요.

"hello".gsub("l", "r")
# => "herro"

String#chomp & String#strip

chomp와 strip은 문자열에서 원하지 않는 문자를 제거할 때 사용할 수 있어요.

chomp 메서드는 기본적으로 문자열 끝의 \r, \n, \r\n 문자를 제거해요. 인자를 전달해서 호출하면, 문자열 끝에서 주어진 값을 제거해요. 문자열 끝에 그 값이 있을 경우에만요.

"hello\n".chomp
# => "hello"

"hello".chomp("llo")
# => "he"

기본적으로 strip 메서드는 문자열의 앞과 뒤에 있는 모든 공백을 제거해요. 인자를 전달해서 호출하면, 문자열의 앞과 뒤에서 그 인자를 제거해요. 문자열의 앞이나 뒤에 그 값이 있을 경우에만요.

" hello ".strip
# => "hello"

String#index

index 메서드는 문자열에서 문자의 인덱스를 찾을 때 사용할 수 있어요. index 메서드는 인자로 String, Char, 정규식을 받아요. 검색을 시작할 인덱스를 지정하는 선택적 두 번째 인자를 받을 수도 있어요. index 메서드는 인자가 처음 나타나는 위치의 인덱스를 반환해요.

"hello".index("l")
# => 2

"hello".index("l", 3)
# => 3

String#delete_at

delete_at 메서드를 사용하면 문자열에서 문자 하나를 제거할 수 있어요. delete_at 메서드는 인덱스를 인자로 받아 그 인덱스에 있는 문자를 제거해요.

"hello".delete_at(0)
# => "ello"

"hello".delete_at(3)
# => "helo"

String#insert

insert 메서드를 사용하면 특정 인덱스에 문자열을 삽입할 수 있어요. insert 메서드는 첫 번째 인자로 인덱스를, 두 번째 인자로 문자열을 받아요. insert 메서드는 두 번째 인자가 해당 인덱스에 삽입된 새 문자열을 반환해요.

"hello".insert(0, "h")
# => "hhello"

"hello".insert(3, "l")
# => "helllo"

지침

이 연습 문제에서는 고등학교 커플이 소셜 미디어에서 사랑을 고백할 수 있도록, 두 사람의 이니셜이 들어간 ASCII 하트를 만들어 볼 거예요.

❤ J.  +  M. ❤

1. 이름 정리하기

HighSchoolSweetheart.clean_up_name 메서드를 구현해요. 이름을 받아서 - 문자를 모두 제거하고 공백으로 바꿔야 해요. 이름의 앞뒤에 있는 공백도 제거해야 해요.

HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"

2. 이름의 첫 글자 가져오기

HighSchoolSweetheart.first_letter 메서드를 구현해요. 이름을 받아서 첫 글자를 반환해야 해요. 이전 단계에서 정의한 HighSchoolSweetheart.clean_up_name을 다시 사용해야 해요.

HighSchoolSweetheart.first_letter("Jane")
# => "J"

3. 첫 글자를 이니셜 형식으로 만들기

HighSchoolSweetheart.initial 메서드를 구현해요. 이름을 받아서 첫 글자를 대문자로 바꾸고 마침표를 붙여 반환해야 해요. 이전 단계에서 정의한 HighSchoolSweetheart.first_letter를 다시 사용해야 해요.

HighSchoolSweetheart.initial("Robert")
# => "R."

4. 하트 안에 이니셜 넣기

HighSchoolSweetheart.pair 메서드를 구현해요. 이름 두 개를 받아서 양옆에 이모지 하트를 붙인 이니셜을 반환해야 해요. 이전 단계에서 정의한 HighSchoolSweetheart.initial을 다시 사용해야 해요.

HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B.  +  R. ❤"
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Crystal Exercism

고등학교 연인 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Crystal 트랙을 개념 26개연습 문제 142개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.