조건 : 단어들 사이에 dash를 넣으시오.
예시 :
This Is Spinal Tap -> this-is-spinal-tap
The_Andy_Griffith_Show -> the-andy-griffith-show
AllThe-small Things -> all-the-small-things
thisIsSpinalTap -> this-is-spinal-tap
해결 방법
function spinalCase(str) {
// "It's such a fine line between stupid, and clever."
// --David St. Hubbins
let upper = /[A-Z]/g;
for (let i = 0; i < str.length; i++) {
if (str[i - 1] === " " || str[i - 1] === "_") {
str = str.replace(str[i - 1], "-");
str = str.replace(str[i], str[i].toLowerCase());
} else if (upper.test(str[0])) {
str = str.replace(str[0], str[0].toLowerCase());
} else if (upper.test(str[i])) {
str = str.replace(str[i], `-${str[i].toLowerCase()}`);
}
}
return str.toLowerCase();
}
아쉬운점은 중복되는 부분들이 있다.
str = str.replace(str[], str[].toLowerCase());
이와 같은 형태인데 좀 더 연구해서 함수로 바꿔주면 중복을 피할 수 있지 않을까?