在 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