2/22 TIL

정민세·2023년 2월 22일
0

오늘 푼 문제

JadenCase 문자열 만들기

function solution(s) { 
    return s.toLowerCase().split(' ').map((el) => el.replace(/\b[a-z]/g, char => char.toUpperCase())).join(' ')
}
  • JadenCase는 첫번째 글자가 대문자로 시작하는 문자열이다. 파라미터로 '3apple banana grape'라는 String 식으로 들어오고 두번째 글자가 알파벳으로 시작한다면 따로 대문자로 치환해주지 않아도 된다.
    우선 파라미터로 들어오는 문자열들을 toLowerCase() 함수를 이용해 모두 소문자로 변환해준 뒤 split 메소드로 공백을 기준으로 배열로 변환해준다. 그리고 map을 이용하여 각 element들의 replace 메소드를 이용하여 정규식을 인자로 받은 뒤 첫번째 글자를 대문자로 치환하게 만들고 join 메소드로 공백을 넣어 String으로 반환할 수 있게 하였다.

🖐️ toLowerCase()

toLowerCase()는 소문자로 변환된 호출 문자열 값을 반환합니다.
str.toLowerCase()

🖐️ toUpperCase()

toUpperCase()는 소문자로 변환된 호출 문자열 값을 반환합니다.
str.toUpperCase()

🖐️ replace()

replace()하나, 일부 또는 모든 일치 항목이 포함된 새 문자열을 반환합니다 .
상황에 따라 비교하는 인자를 주고 콜백함수를 실행 할 수 있습니다.
str.replace(찾을 값, 변환할 값)
str.replace(찾을 값, () => 콜백함수)

위에서 쓰인 정규식은 /\b[a-z]/g 해석하자면 \b는 공백을 기준으로 element를 차례대로 반복하여 비교하고 [a-z]는 소문자라는 조건, /g는 조건에 만족할 시 알파벳을 대문자로 바꾼 후 그 다음 비교할 값으로 일종의 break라고 생각했다.

❓궁금점

  • 정규식의 개념에 대해 완벽히 알지 못해 알파벳이 아닌 숫자일 때는 replace 메소드가 알아서 다음 비교할 값으로 넘어가는건지 숫자를 대문자로 치환을 했다고 생각하고 넘어가는건지 의문이다. 디버깅을 해보아야 알 듯!
profile
하잇

0개의 댓글