我们需要编写一个JavaScript函数,该函数将字符串str作为第一个参数,将Integer用作第二个参数。字符串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