Próbowałem utworzyć potok w maszynie do pisania, który podzieliłby łańcuch PascalCase, ale byłoby miło, gdyby to również podzieliło się na cyfry. Chciałbym również, aby dzieliła się na kolejne duże litery. Mam ten potok, który działa świetnie, z tym że działa tylko w Chrome, a nie w Firefoxie, najwyraźniej tylko Chrome obsługuje przeglądanie wstecz. Jak można to osiągnąć bez odwrotu?
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;
}
Na przykład ciąg ANet15Amount
powinien zostać przekształcony w A Net 15 Amount
. Powyższe wyrażenie regularne również podzieli ciąg camelCase, ale nie jest to konieczne do rozważenia.
(?!^)([A-Z]|\d+)
unika pierwszego miejsca i nie wymaga przycinania.
.replace(/([A-Z]|\d+)/g, " $1").trim();