在 JavaScript 中格式化软件许可证密钥

javascriptweb developmentfront end technology

问题

我们需要编写一个 JavaScript 函数,该函数接受字符串 str 作为第一个参数,接受整数 n 作为第二个参数。字符串 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 时,我们插入破折号并重置为 num。

输出

控制台中的输出将是 −

84B0-T37K

相关文章