Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 소프트웨어 라이센스 키 형식 지정

<시간/>

문제

문자열 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