J'essayais de créer un tube en texte dactylographié qui diviserait une chaîne PascalCase, mais ce serait bien si cela se divisait également en chiffres. J'aimerais également qu'il se divise en majuscules consécutives. J'ai ce tuyau, qui fonctionne très bien, sauf qu'il ne fonctionne que dans Chrome et non Firefox, évidemment, seul Chrome prend en charge les rétrospectifs. Comment peut-on accomplir cela sans regarder en arrière?
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;
}
Ainsi, par exemple, une chaîne ANet15Amount
doit être transformée en A Net 15 Amount
. Cette expression régulière ci-dessus diviserait également une chaîne camelCase, mais ce n'est pas nécessaire à prendre en compte.
(?!^)([A-Z]|\d+)
évite le premier espace et n'a pas besoin d'ajustement.
.replace(/([A-Z]|\d+)/g, " $1").trim();