Computer >> Máy Tính >  >> Lập trình >> Javascript

Định dạng khóa cấp phép phần mềm trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi str, làm đối số đầu tiên và một Số nguyên, n làm đối số thứ hai. Chuỗi str bao gồm các ký tự chữ và số và dấu gạch ngang.

Các dấu gạch ngang chia các ký tự chữ và số trong chuỗi thành các nhóm. (tức là nếu có n dấu gạch ngang, chuỗi được chia thành n + 1 nhóm). Các dấu gạch ngang trong chuỗi đã cho có thể bị đặt sai vị trí.

Chúng tôi muốn mỗi nhóm ký tự có độ dài K (ngoại trừ có thể là nhóm đầu tiên, nhóm đầu tiên có thể ngắn hơn, nhưng vẫn phải chứa ít nhất một ký tự).

Để đáp ứng yêu cầu này, chúng tôi sẽ gắn lại dấu gạch ngang. Hơn nữa, hàm của chúng ta cần chuyển đổi tất cả các chữ cái thường trong chuỗi thành chữ hoa.

Ví dụ:nếu đầu vào của hàm là -

const str = '8-4B0t37-k';
const num = 4;

Sau đó, đầu ra phải là -

const output = '84B0-T37K';

Giải thích đầu ra:

Chuỗi str đã được chia thành hai phần, mỗi phần có 4 ký tự.

Ví dụ

Mã cho điều này sẽ là -

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));

Giải thích mã

Các bước chúng tôi đã thực hiện trong định dạng hàmKey () là -

  • Chúng tôi đã lặp lại ngược lại, để chúng tôi có thể dự phòng cho trường hợp các ký tự còn lại

  • Chúng tôi đã giữ một số lượng các ký tự được chèn. Và khi nó bằng 0, chúng tôi đã chèn dấu gạch ngang và đặt lại thành num.

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

84B0-T37K