Я намагався створити трубу в машинопис, який би розділив рядок PascalCase, але було б добре, якщо це також розділиться на цифри. Я також хотів би, щоб він розділився на послідовні великі літери. У мене є ця труба, яка чудово працює, за винятком того, що вона працює лише в Chrome, а не в Firefox. Як можна досягти цього без огляду назад?
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. Цей вище вираз також розділив рядок camelCase, але це не потрібно враховувати.
(?!^)([A-Z]|\d+)уникає першого місця та не потребує обрізки.
.replace(/([A-Z]|\d+)/g, " $1").trim();