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

ลดขนาดสตริงด้วยตัวเลขนำหน้า (Run-Length Encoding) - JavaScript

สตริงต้นฉบับ: "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 เรียบง่าย