在 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