JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열. 주어진 문자열을 JadenCase로 리턴해야하는 문제.
입출력 예시
let output1 = solution("3people unFollowed me"); // -> "3people Unfollowed Me"
console.log(output1);
let output2 = solution("for the last week"); // -> "For The Last Week"
console.log(output2);
정규표현식을 사용해서, 문자열을 쉽게 다룰 수 있었다.
먼저 모든 문자를 소문자로 변환한 후, 소문자 알파벳으로 시작하는 단어의 첫 번째 문자를 대문자로 바꿔 리턴해주면 된다.
여기서 사용한 정규표현식을 하나씩 살펴보자면,
- \b -> 'boundary' (단어의 경계)를 의미. 앞에 붙이면 범위의 앞글자가 선택된다.
- [a-z] -> a부터 z까지 소문자 알파벳
- /g -> 문자열 전체 범위
/\b[a-z]/g = (문자열 전체 범위에서) 소문자 알파벳인 단어의 앞 글자
이 정규표현식을 사용하면 문자열에서 수정하고 싶은 부분을 선택할 수 있다.
이 부분을 replace 메서드를 이용하여 선택한 문자열을 바꿔주면 되는데, 여기서 두 번째 인자에 콜백 함수를 넣어주었다. replace 메서드의 첫 번째 인자로 들어간 문자를 콜백 함수의 인자에 넣어 대문자로 변환시키면 쉽게 풀 수 있다.
이 방법을 적용시키면 다음과 같이 문제를 풀 수 있다.
function solution(s) {
return s.toLowerCase().replace(/\b[a-z]/g, (match) => match.toUpperCase());
}