문자열을 입력받아 각 단어의 첫 글자는 대문자로, 나머지 글자는 모두 소문자로 변환하는 함수를 작성해야 한다고 가정해 보겠습니다.
예를 들어, 입력 문자열이 다음과 같다면 −
hello world coding is very interesting
출력 결과는 다음과 같아야 합니다 −
Hello World Coding Is Very Interesting
이제 문자열을 인수로 받아 각 단어의 첫 글자를 대문자로 변환한 뒤 결과 문자열을 반환하는 capitaliseTitle() 함수를 정의해 보겠습니다 −
예제
let str = 'hello world coding is very interesting';
const capitaliseTitle = (str) => {
const string = str
.toLowerCase()
.split(" ")
.map(word => {
return word[0]
.toUpperCase() + word.substr(1, word.length);
})
.join(" ");
return string;
}
console.log(capitaliseTitle(str));
출력
콘솔 출력 결과는 다음과 같습니다 −
Hello World Coding Is Very Interesting
코드 동작 원리
위 함수가 처리되는 과정을 단계별로 살펴보면 다음과 같습니다.
- toLowerCase(): 먼저 전체 문자열을 소문자로 통일하여 대소문자가 섞여 있어도 일관된 결과를 얻도록 합니다.
- split(" "): 공백을 기준으로 문자열을 잘라 각 단어로 이루어진 배열을 만듭니다.
- map(): 배열의 각 단어에 대해 첫 번째 문자를 toUpperCase()로 대문자로 변환하고, substr(1, word.length)로 두 번째 문자부터 끝까지 이어 붙입니다.
- join(" "): 변환된 단어들을 다시 공백으로 연결해 하나의 완성된 문자열로 반환합니다.
참고로 최신 자바스크립트 환경에서는 word.slice(1)을 사용하는 것이 substr보다 권장되며, 정규표현식과 replace() 메서드를 활용하면 더 간결하게 같은 결과를 얻을 수도 있습니다.