Bir PascalCase dizesini bölecek patlama yazı tipinde bir boru yapmaya çalışıyordum, ama bu da rakamlar üzerinde de bölünürse güzel olurdu. Ayrıca ardışık büyük harflere bölünmesini de istiyorum. Harika çalışan bu boruya sahibim, ancak Firefox'ta değil, yalnızca Chrome'da çalışıyor, sadece Chrome'un arkası olanları destekliyor. Geriye bakmadan bunu nasıl başarabilirim?
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;
}
Örneğin, bir dize ANet15Amountdönüştürülmelidir A Net 15 Amount. Yukarıdaki bu normal ifade ayrıca bir camelCase dizesini böler, ancak bu dikkate alınması gerekmez.
(?!^)([A-Z]|\d+)ilk alandan kaçınır ve trim gerektirmez.
.replace(/([A-Z]|\d+)/g, " $1").trim();