_문자열_은 텍스트 데이터를 저장하기 위한 JavaScript의 데이터 타입이에요.
문자열은 텍스트를 작은따옴표나 큰따옴표로 감싸서 만들어요. Exercism에서는 작은따옴표를 사용해요.
'Hello, World!'
"Hello, World!"
문자열은 문자의 목록으로 볼 수 있고, 첫 번째 문자의 인덱스는 0이에요.
대괄호와 가져오고 싶은 문자의 인덱스를 사용해서 문자열의 개별 문자에 접근할 수 있어요.
'cat'[1];
// => 'a'
length 속성에 접근해서 문자열의 문자 수를 알아낼 수 있어요.
'cat'.length;
// => 3
문자열을 연결하는 가장 간단한 방법은 덧셈 연산자 +를 사용하는 거예요.
'I like' + ' ' + 'cats.';
// => "I like cats."
문자열은 다양한 편의 메서드를 제공해요. 전체 목록은 MDN의 문자열 메서드 문서를 참고해요. 다음 목록은 자주 사용되는 편의 메서드 일부를 보여줘요.
toUpperCase와 toLowerCase - 모든 문자의 대소문자를 바꿔요trim - 앞과 뒤의 공백을 제거해요includes, startsWith, endsWith - 다른 문자열이 주어진 문자열의 일부인지 판단해요slice - 문자열의 일부를 추출해요JavaScript에서 문자열은 변경할 수 없어요. 그래서 위 메서드들처럼 "수정"을 하면 항상 새로운 문자열이 만들어져요.
마을에 새 시 동아리가 문을 열었고, 가입할까 생각 중이에요. 예전에 몇 번 사건이 있었기 때문에, 이 동아리에는 아주 까다로운 출입 규칙이 있어요. 들어가려면 먼저 이 규칙을 익혀야 해요.
시 동아리에는 문이 두 개, 앞문과 뒷문이 있고 둘 다 문지기가 지켜요. 들어가려면 그날의 비밀번호를 알아내야 해요.
비밀번호는 항상 시를 바탕으로 하고, 두 단계로 알아낼 수 있어요.
자세한 과정은 어느 문으로 들어가려는지에 따라 달라요.
앞문 비밀번호에 쓸 글자를 정하려면, 문지기가 읊어 주는 시의 줄에서 첫 글자로 응답해야 해요.
시 동아리 회원들은 멋진 비밀번호를 만들기 위해 _머리글자 시_를 즐겨 써요. 머리글자 시란 각 문장의 첫 글자를 모으면 단어가 되는 시를 말해요. 다음은 회원들이 가장 좋아하는 작가 중 한 명인 Michael Lockwood의 예예요.
Stands so high
Huge hooves too
Impatiently waits for
Reins and harness
Eager to leave
그래서 문지기가 Stands so high를 읊으면 S라고 응답하고, 문지기가 Huge hooves too를 읊으면 H라고 응답해요.
시의 한 줄을 인자로 받아 그 줄의 첫 글자를 반환하는 frontDoorResponse 함수를 구현해요.
frontDoorResponse('Stands so high');
// => "S"
이제 올바른 글자를 모두 모았으니, 앞문 비밀번호를 얻으려면 단어를 알맞게 대문자로 만들기만 하면 돼요.
문자열(1번 과제에서 찾은 글자들을 합친 것)을 받아 알맞게 대문자로 만든 문자열을 반환하는 frontDoorPassword 함수를 구현해요.
frontDoorPassword('SHIRE');
// => "Shire"
frontDoorPassword('shire');
// => "Shire"
뒷문 비밀번호에 쓸 글자를 정하려면, 문지기가 읊어 주는 시의 줄에서 마지막 글자로 응답해야 해요.
시 동아리 회원들은 정말 영리해요. 앞에서 본 시는 _꼬리글자 시_이기도 한데, 이는 각 문장의 마지막 글자도 단어를 이룬다는 뜻이에요.
Stands so high
Huge hooves too
Impatiently waits for
Reins and harness
Eager to leave
문지기가 Stands so high를 읊으면 h라고 응답하고, 문지기가 Huge hooves too를 읊으면 o라고 응답해요.
문지기는 가끔 줄의 앞이나 뒤에서 (공백의 형태로) 멋을 부리듯 쉬어요. 알맞은 글자를 얻으려면 그런 쉼은 무시해야 해요.
시의 한 줄을 인자로 받아, 공백 문자가 아닌 그 줄의 마지막 글자를 반환하는 backDoorResponse 함수를 구현해요.
backDoorResponse('Stands so high');
// => "h"
backDoorResponse('Stands so high ');
// => "h"
시 동아리에 뒷문으로 들어가려면 각별히 예의를 갖춰야 해요.
그래서 이번에는 비밀번호를 만들 때 단어를 알맞게 대문자로 만들고 끝에 ', please'를 붙여야 해요.
문자열(3번 과제에서 찾은 글자들을 합친 것)을 받아, 대문자로 만든 비밀번호에 예의를 갖춘 형태를 반환하는 backDoorPassword 함수를 구현해요.
backDoorPassword('horse');
// => "Horse, please"
Exercism에 가입하고 JavaScript 트랙을 개념 37개연습 문제 159개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.