在 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.