ฉันพยายามที่จะสร้างไพพ์ใน typescript ที่จะแยกสตริง PascalCase แต่มันจะดีถ้ามันจะแบ่งเป็นตัวเลขด้วยเช่นกัน ฉันต้องการให้แยกตามตัวอักษรพิมพ์ใหญ่ต่อเนื่อง ฉันมีไพพ์นี้ซึ่งใช้งานได้ดียกเว้นว่าใช้งานได้เฉพาะใน Chrome และไม่ใช่ Firefox เท่านั้น Chrome เท่านั้นที่รองรับการมองย้อนหลัง จะทำสิ่งนี้ให้สำเร็จโดยไม่มองย้อนกลับไปได้อย่างไร
transform(value: string): string {
let extracted = '';
if (!value) {
return extracted;
}
const regExSplit = value
.split(new RegExp('(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[0-9])(?=[A-Z][a-z])|(?<=[a-zA-Z])(?=[0-9])'));
for (let i = 0; i < regExSplit.length; i++) {
if (i !== regExSplit.length - 1) {
extracted += `${regExSplit[i]} `;
} else {
extracted += regExSplit[i];
}
}
return extracted;
}
ดังนั้นสำหรับตัวอย่างเช่นสตริงควรจะเปลี่ยนเป็นANet15Amount
A Net 15 Amount
Regex ด้านบนนี้จะแยกสตริง camelCase ด้วย แต่ก็ไม่จำเป็นที่จะต้องพิจารณา
(?!^)([A-Z]|\d+)
หลีกเลี่ยงช่องว่างแรกและไม่จำเป็นต้องตัดแต่ง
.replace(/([A-Z]|\d+)/g, " $1").trim();