Ich habe versucht, eine Pipe in Typoskript zu erstellen, die eine PascalCase-Zeichenfolge aufteilt, aber es wäre schön, wenn dies auch auf Ziffern aufgeteilt würde. Ich möchte auch, dass es in aufeinanderfolgende Großbuchstaben aufgeteilt wird. Ich habe diese Pipe, die großartig funktioniert, außer dass sie nur in Chrome und nicht in Firefox funktioniert. Offensichtlich unterstützt nur Chrome Lookbacks. Wie kann dies ohne Rückblicke erreicht werden?
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;
}
So sollte beispielsweise eine Zeichenfolge ANet15Amount
in transformiert werden A Net 15 Amount
. Dieser reguläre Ausdruck würde auch eine camelCase-Zeichenfolge aufteilen, dies muss jedoch nicht berücksichtigt werden.
(?!^)([A-Z]|\d+)
vermeidet das erste Leerzeichen und benötigt keine Trimmung.
.replace(/([A-Z]|\d+)/g, " $1").trim();