Eu estava tentando fazer um pipe no texto datilografado que dividisse uma string PascalCase, mas seria bom se isso também fosse dividido em dígitos. Eu também gostaria que fosse dividido em maiúsculas consecutivas. Eu tenho esse pipe, que funciona muito bem, exceto que funciona apenas no Chrome e não no Firefox, evidentemente, apenas o Chrome oferece suporte ao visual. Como conseguir isso sem olhar para trás?
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;
}
Por exemplo, uma string ANet15Amountdeve ser transformada em A Net 15 Amount. Esse regex acima também dividiria uma string camelCase, mas isso não é necessário considerar.
(?!^)([A-Z]|\d+)evita o primeiro espaço e não precisa de corte.
.replace(/([A-Z]|\d+)/g, " $1").trim();