kebabize
는 CamelCase 문자열을 kebab case로 변환하도록 하는 함수를 작성하십시오.
kebabize('camelsHaveThreeHumps') // camels-have-three-humps
kebabize('camelsHave3Humps') // camels-have-humps
Code language: JavaScript (javascript)
반환 된 문자열은 소문자만 포함해야합니다.
function kebabize(str) {
// 숫자 제거
let instanceStr = str.replace(/[0-9]/g, '');
instanceStr = instanceStr[0].toLowerCase() + instanceStr.substring(1);
return instanceStr.replace(/([A-Z])/g, '-$1').toLowerCase();
}
Code language: JavaScript (javascript)
여기서 모든 문자열에 대해서 정규식으로 변환했는데 그러면 첫 문자열이 대문자일 경우에도 -$1
로 지정되어 버려서 instanceStr
에서 첫 문자열만 먼저 빼내서 저장했는데 정규식 자체에서 첫번째 글자를 선택해서 해당 규칙을 검사하는 방법이 있었다.
function kebabize(str) {
return str.replace(/[^a-z]/ig, '').
replace(/^[A-Z]/, c => c.toLowerCase()).
replace(/[A-Z]/g, c => `-${c.toLowerCase()}`);
}
Code language: JavaScript (javascript)
.replace(/[^a-z]/ig, '')
문자열을 제외한 모든 대소문자를 구분하지 않는 것을 선택해서 제거한다.
.replace(/[^a-z]/ig, '') replace(/^[A-Z]/, c => c.toLowerCase())
첫번째 글자가 소문자가 아니라면 소문자로 변경해라
정규식을 조금더 활용하면 짧고 이해하기 쉬운 코드로 만들 수 있다. 조금더 고민 해보자!