Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การจัดรูปแบบรหัสลิขสิทธิ์ซอฟต์แวร์ใน 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() คือ −

  • เราทำซ้ำในทางกลับกัน เพื่อให้เราสามารถรองรับกรณีของตัวอักษรที่เหลือ

  • เราเก็บจำนวนอักขระที่แทรกไว้ และเมื่อเป็น 0 เราก็ใส่ dash และรีเซ็ตเป็น num

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

84B0-T37K