JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
|s |return
|"3people unFollowed me"| "3people Unfollowed Me"
|"for the last week"| "For The Last Week"
처음에는 정규식으로 풀어보려고 했다.
function solution(s) {
let answer = '';
const arr = s.split(" ")
const reg = /\b[a-z]/g
arr.forEach(str=>{
const newStr = str.replace(reg, (char=>char.toUpperCase()))
answer = answer+" "+newStr
})
return answer.trim()
}
그런데 테스트 케이스를 자세히 보니
unFollowed 처럼 중간에 대문자가 섞여있는 경우가 있었다.
또 제일 앞쪽에 의미없는 공백이 생겨버리고
만약 정답이 "A B C " 같이 뒤쪽에 공백이 있는경우 공백이 trim으로 인해서 없어져 버렸다.
그 결과 테스트8번을 통과 못하게 됐다.
그래서 앞 한글자만 따와서 대문자로 나머진 소문자로 바꾸도록 변경 하였다.
function solution(s) {
return s.split(" ").map(str=>{
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()
}).join(" ")
}