Vấn đề
Cần viết hàm JS nhận chuỗi str (chữ số, chữ cái, dấu gạch ngang) và số nguyên n. Dấu gạch ngang tách các nhóm ký tự. Muốn mỗi nhóm có độ dài K (trừ nhóm đầu có thể ngắn hơn nhưng ít nhất 1 ký tự). Chèn lại dấu gạch ngang và chuyển chữ thường thành hoa.
Ví dụ:
const str = '8-4B0t37-k'; const num = 4;
Kết quả:
const output = '84B0-T37K';
Giải thích:
Chuỗi được tách thành 2 phần, mỗi phần 4 ký tự.
Ví dụ
Mã thực hiện:
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 code:
Các bước:
Duyệt ngược để xử lý nhóm đầu có thể ngắn hơn.
Đếm ký tự đã chèn, khi về 0 thì chèn gạch ngang và reset về num.
Kết quả
Kết quả in ra console:
84B0-T37K