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

แยกสตริงเมื่อตัวอักษรเปลี่ยนใน JavaScript ด้วย Regex

ใช้ match() กับ Regex กลุ่มตัวอักษรซ้ำติดกัน

Regex /(.)\1*/g จับกลุ่มตัวอักษรที่ซ้ำติดกัน (เช่น JJJJ, HHHH)

ตัวอย่างโค้ด

var originalString = "JJJJOHHHHNNNSSSMMMIIITTTTHHH";
var regularExpression = /(.)\1*/g;

console.log("สตริงต้นฉบับ = " + originalString);

var splitting = originalString.match(regularExpression);
console.log("หลังแยก = ");
console.log(splitting);

วิธีรัน

node fileName.js

ผลลัพธ์

สตริงต้นฉบับ = JJJJOHHHHNNNSSSMMMIIITTTTHHH
หลังแยก = [ 'JJJJ', 'O', 'HHHH', 'NNN', 'SSS', 'MMM', 'III', 'TTTT', 'HHH' ]

คำอธิบาย Regex

  • (.): จับตัวอักษรตัวใดตัวหนึ่ง (กลุ่มที่ 1)
  • \1*: อ้างอิงกลุ่มที่ 1 ซ้ำ 0 ครั้งขึ้นไป (backreference)
  • /g: Global - หาทุกครั้งในสตริง

ประยุกต์ใช้: Run-Length Encoding (RLE)

const rle = originalString.match(/(.)\1*/g)
  .map(group => group.length + group[0])
  .join('');
console.log(rle); // "4J1O4H3N3S3M3I4T3H"