const isLowerCase = (char) => char.toLowerCase() == char;
const isNum = (char) => !isNaN(parseInt(char));
const mapHelper = (word) => {
if (!word) {
return;
}
const firstLetter = word[0];
if (isNum(firstLetter)) {
return word.toLowerCase();
}
if (isLowerCase(firstLetter)) {
return firstLetter.toUpperCase() + word.slice(1).toLowerCase();
}
return firstLetter + word.slice(1).toLowerCase();
};
const solution = (s) => {
return s.split(" ").map(mapHelper).join(" ");
};
공백 문자 여러개 예외처리를 내가 실전에서 생각해낼 수 있을지 모르겠다.
아 숫자에는 toUpperCase, toLowerCase가 영향을 안 미치니까 굳이 숫자를 구분해줄 이유가 없네;;
const mapHelper = (word) => {
if (word) {
return word[0].toUpperCase() + word.slice(1).toLowerCase();
}
};
const solution = (s) => {
return s.split(" ").map(mapHelper).join(" ");
};
공백이 여러 개 겹쳐서 빈 문자열이 들어올 때는 toLowerCase와 같은 메소드가 에러를 뱉기 때문에 그거에 대한 예외처리가 힘들었다
mapHelper가 undefined를 뱉어도 빈 문자열로 받아들이는구나...
(x같은 자스)