Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีแบ่ง String ใหญ่เป็น Chunks ขนาด n ใน JavaScript

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