บทความนี้สาธิตฟังก์ชันแปลงสตริง camelCase ให้คั่นคำด้วยตัวแบ่งที่กำหนด (เช่น underscore)
ตัวอย่าง
const str = 'thisIsAString'; const separator = '_'; // ผลลัพธ์: 'this_is_a_string'
ตัวอย่างโค้ด
const str = 'thisIsAString';
const separator = '_';
const separateCase = (str = '', separator = ' ') => {
const arr = [];
let left = 0, right = 0;
for (let i = 0; i < str.length; i++) {
const el = str[i];
const next = str[i + 1];
if ((el.toUpperCase() === el && el.toUpperCase() !== el.toLowerCase()) || !next) {
right = i + Number(!next);
}
if (left !== right) {
const sub = str.substring(left, right).toLowerCase();
arr.push(sub);
left = right;
}
}
return arr.join(separator);
};
console.log(separateCase(str, separator));
ผลลัพธ์
this_is_a_string
คำอธิบาย
อัลกอริทึมสแกนหาตัวอักษรพิมพ์ใหญ่ (uppercase) ซึ่งเป็นจุดเริ่มต้นคำใหม่ใน camelCase ตัด substring ระหว่าง left และ right แปลงเป็น lowercase แล้ว join ด้วย separator
จัดการตัวอักษรสุดท้ายด้วยเงื่อนไข !next