ปัญหา
รับสตริง str (ตัวอักษร/ตัวเลข/ขีด) และ n จัดกลุ่มตัวอักษรให้ยาว n ตัว (กลุ่มแรกสั้นกว่าได้) แปลงเป็นตัวใหญ่ทั้งหมด
ตัวอย่าง
const str = '8-4B0t37-k'; const num = 4;
ผลลัพธ์: '84B0-T37K' (สองกลุ่ม ยาว 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));
คำอธิบาย
- วนจากท้ายไปหน้า เพื่อจัดการกลุ่มแรกที่อาจสั้นกว่า
- นับตัวอักษรที่ใส่แล้ว เมื่อครบ
numให้ใส่ขีดและรีเซ็ต
ผลลัพธ์
84B0-T37K