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


问题

我们需要编写一个 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() 中采取的步骤如下 -

  • 我们反向迭代,以便适应剩余字符 < num 的情况(因为第一部分没有必须正好有 num 个字符的强制要求)。

  • 我们统计了插入的字符数。当它为 0 时,我们插入短横线并重置为 num。

输出

控制台中的输出将为 -

84B0-T37K

更新于: 2021-03-04

152 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.