Split String เป็น Chunks ขนาด n
วิธี 1: Regex (แนะนำ - Concise)
function chunkString(str, size) {
if (!str) return [];
return str.match(new RegExp(`.{1,${size}}`, 'g'));
}
// Usage
chunkString('tutorialspoint', 3); // ['tut', 'ori', 'als', 'poi', 'nt']
chunkString('tutorix', 2); // ['tu', 'to', 'ri', 'x']
วิธี 2: Loop (Conventional - เข้าใจง่าย)
function chunkStringLoop(str, size) {
const chunks = [];
for (let i = 0; i < str.length; i += size) {
chunks.push(str.slice(i, i + size));
}
return chunks;
}
ตัวอย่างครบ
<script>
const stringChop = (str, size) => {
if (str == null) return [];
str = String(str);
return size > 0 ? str.match(new RegExp(`.{1,${size}}`, 'g')) : [str];
};
console.log(stringChop('tutorialspoint')); // ['tutorialspoint'] (default size=0 → whole)
console.log(stringChop('tutorix', 2)); // ['tu', 'to', 'ri', 'x']
console.log(stringChop('tutorialspoint', 3)); // ['tut', 'ori', 'als', 'poi', 'nt']
</script>
จัดการ Newlines (ถ้าจำเป็น)
// รองรับ \r\n
str.match(new RegExp(`(.|[\\r\\n]){1,${size}}`, 'g'));
Use Cases
- Format Credit Card/Phone Number:
chunkString('1234567890', 4).join(' ')
- Base64 Line Wrapping (76 chars per line)
- Text Processing/Truncation
- Streaming Chunked Transfer
Performance Note
- Regex: เร็วกว่าสำหรับ String ใหญ่
- Loop: เข้าใจง่าย, Debug ง่าย, ไม่มี Regex Overhead