알고리즘 - freeCodeCamp - Spinal Tap Case

NO PAIN, NO GAIN·2019년 11월 17일
0

algorithm

목록 보기
1/18

조건 : 단어들 사이에 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());

이와 같은 형태인데 좀 더 연구해서 함수로 바꿔주면 중복을 피할 수 있지 않을까?

profile
갈고 닦자.

0개의 댓글