สตริงต้นฉบับ: "DDAAVIDMMMILLERRRRR"
ต้องการบีบอัด: ตัวอักษรซ้ำกัน → นำหน้าด้วยจำนวน ใช้ replace() พร้อม Regex
ตัวอย่างโค้ด
var values = "DDAAVIDMMMILLERRRRR";
var precedingNumbersInString = values.replace(/(.)\1+/g, obj => obj.length + obj[0]);
console.log("The original string value=" + values);
console.log("String value after preceding the numbers =");
console.log(precedingNumbersInString);รันด้วยคำสั่ง:
node fileName.js
ชื่อไฟล์: demo295.js
ผลลัพธ์
PS C:\Users\Amit\javascript-code> node demo295.js The original string value=DDAAVIDMMMILLERRRRR String value after preceding the numbers = 2D2AVID3MI2LE5R
คำอธิบาย Regex: (.)\1+ จับกลุ่มตัวอักษรใดๆ (.) ตามด้วยตัวเดียวกัน 1 ครั้งขึ้นไป \1+ callback ใช้ obj.length (ความยาวที่จับได้) + obj[0] (ตัวอักษรตัวแรก) เป็น Run-Length Encoding เรียบง่าย