Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จะแยกสตริงขนาดใหญ่ออกเป็นชิ้นขนาด n ใน JavaScript ได้อย่างไร


มีสองวิธีในการแบ่งสตริงขนาดใหญ่เป็นสตริงย่อยขนาด n

1) วิธีการทั่วไป

นี่เป็นวิธีลอจิกล้วนๆ ที่ใช้เฉพาะวิธีการทั่วไป เช่น for loop, concat, modulous เป็นต้น วิธีนี้ไม่ได้ซับซ้อนเท่าวิธี regex เพราะเป็นวิธีการที่กำหนดไว้ล่วงหน้า ควรกำหนดจำนวนชิ้นที่จะแบ่งสตริงก่อนเริ่มการเข้ารหัส

ในตัวอย่างต่อไปนี้ สตริง "tutorixtutorixtutorix" ถูกแบ่งออกเป็นสตริงย่อย 3 ส่วน

ตัวอย่าง

<html>
<body>
<script>
   var v = [];
   var str = "tutorixtutorixtutorix"
   var t = str.split("");
   document.write(t);
   document.write("</br>");
   for (var i = 0; i< t.length; i++){
      if((i % 3) == 2){
         v.push(t[i-2].concat(t[i-1],t[i]));
      }
   }
   document.write(v);
</script>
</body>
</html>

ผลลัพธ์

tut,ori,xtu,tor,ixt,uto,rix


2) วิธี Regex

ไม่ใช่วิธีการที่กำหนดไว้ล่วงหน้า วิธี Regex มีช่องสำหรับระบุขนาดที่จะแยกสตริง

โดยทั่วไป สำหรับสตริงใดๆ ที่คุณต้องการแยกสตริงย่อยที่มีขนาดไม่เกิน n ไวยากรณ์คือ

   str.match(/.{1,n}/g); // Replace n with the size of the substring

หากสตริงมีการขึ้นบรรทัดใหม่หรือการขึ้นบรรทัดใหม่ ไวยากรณ์จะเป็น

  str.match(/(.|[\r\n]){1,n}/g); // Replace n with the size of the substring

ไวยากรณ์ดั้งเดิมของรหัสคือ

   function chunkString(str, size) {
     return str.match(new RegExp('.{1,' + size + '}', 'g'));
}

ตัวอย่าง

<html>
<body>
<script>
   stringChop = function(str, size){
      if (str == null)
         return [];
         str = String(str);
         return size > 0 ? str.match(new RegExp('.{1,' + size + '}', 'g')) : [str];
   }
   document.write(stringChop('tutorialspoint'));
   document.write("<br>");
   document.write(stringChop('tutorix',2));
   document.write("<br>");
   document.write(stringChop('tutorialspoint',3));
</script>
</body>
</html>

ผลลัพธ์
["tutorialspoint"]
["tu","to","ri","x"]
["tut","ori","als","poi","nt"]