Stavo cercando di creare una pipe in dattiloscritto che avrebbe diviso una stringa PascalCase, ma sarebbe bello se anche questo fosse diviso anche in cifre. Vorrei anche che si dividesse in lettere maiuscole consecutive. Ho questa pipa, che funziona alla grande, tranne che funziona solo su Chrome e non su Firefox, evidentemente solo Chrome supporta i look back. Come può farlo senza guardare indietro?
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;
}
Quindi ad esempio una stringa ANet15Amount
dovrebbe essere trasformata in A Net 15 Amount
. Anche questa regex sopra dividerebbe una stringa camelCase, ma non è necessario considerarla.
(?!^)([A-Z]|\d+)
evita il primo spazio e non ha bisogno di rifiniture.
.replace(/([A-Z]|\d+)/g, " $1").trim();