문제
문자열 str을 첫 번째 인수로, 정수 n을 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다. 문자열 str은 영숫자와 대시로 구성됩니다.
대시는 문자열 내의 영숫자를 그룹으로 나눕니다. (즉, n개의 대시가 있는 경우 문자열은 n+1개의 그룹으로 분할됩니다). 주어진 문자열의 대시가 잘못 배치되었을 수 있습니다.
우리는 각 문자 그룹의 길이가 K가 되기를 바랍니다(첫 번째 그룹은 더 짧을 수 있지만 여전히 하나 이상의 문자를 포함해야 함).
이 요구 사항을 충족하기 위해 대시를 다시 삽입합니다. 또한, 우리 함수는 문자열의 모든 소문자를 대문자로 변환해야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const str = '8-4B0t37-k'; const num = 4;
그러면 출력은 다음과 같아야 합니다. -
const output = '84B0-T37K';
출력 설명:
문자열 str은 두 부분으로 분할되었으며 각 부분에는 4개의 문자가 있습니다.
예시
이에 대한 코드는 -
const str = '8-4B0t37-k'; const num = 4; const formatKey = (str = '', num = 1) => { let acc = ''; let flag = num; for(let i = str.length - 1; i >= 0; i--){ const char = str.charAt(i); if(char !== '-') { if(flag === 0) { acc = `-${acc}`; flag = num; }; acc = `${char.toUpperCase()}${acc}`; flag -= 1; }; }; return acc; }; console.log(formatKey(str, num));
코드 설명
formatKey() 함수에서 취한 단계는 다음과 같습니다. -
-
나머지 문자
-
삽입된 문자 수를 유지했습니다. 그리고 0일 때 대시를 삽입하고 숫자로 재설정했습니다.
출력
콘솔의 출력은 -
84B0-T37K