在 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP