เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์กิวเมนต์ 3 ค่า:
- สตริง (String)
- ตัวเลข (Number) - จำนวนตัวอักษรก่อนแทรก
- ตัวอักษรเดี่ยว (Character) - ตัวอักษรที่จะแทรก
ตัวเลขที่รับเข้ามาจะมีค่าน้อยกว่าความยาวของสตริงเสมอ ฟังก์ชันควรแทรกตัวอักษรที่กำหนด หลังจากทุก n ตัวอักษร และคืนค่าสตริงใหม่
ตัวอย่าง
const str = 'NewDelhi'; const n = 3; const char = ' ';
ผลลัพธ์ที่คาดหวัง:
'Ne wDe lhi'
โค้ดตัวอย่าง
const str = 'NewDelhi';
const n = 3;
const char = ' ';
const insertAtEvery = (str = '', num = 1, char = ' ') => {
// กลับสตริงเพื่อจัดการจากท้ายไปหน้า
str = str.split('').reverse().join('');
// สร้าง Regex สำหรับจับกลุ่มทุก num ตัวอักษร
const regex = new RegExp('.{1,' + num + '}', 'g');
// แทรก char ระหว่างกลุ่ม
str = str.match(regex).join(char);
// กลับสตริงกลับมาปกติ
str = str.split('').reverse().join('');
return str;
};
console.log(insertAtEvery(str, n, char));
ผลลัพธ์
Ne wDe lhi
วิธีทำอีกแบบ (เข้าใจง่ายกว่า)
const insertAtEverySimple = (str, n, char) => {
let result = '';
for (let i = 0; i < str.length; i += n) {
result += str.slice(i, i + n);
if (i + n < str.length) result += char;
}
return result;
};