Tôi đã cố gắng tạo một đường ống trong bản thảo để phân tách chuỗi PascalCase, nhưng thật tuyệt nếu điều này cũng sẽ phân chia theo các chữ số. Tôi cũng muốn nó để phân chia các chữ in hoa liên tiếp. Tôi có đường ống này, hoạt động rất tốt, ngoại trừ nó chỉ hoạt động trong Chrome chứ không phải Firefox, rõ ràng chỉ có Chrome hỗ trợ nhìn lại. Làm thế nào có thể thực hiện điều này mà không cần nhìn lại?
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;
}
Vì vậy, ví dụ một chuỗi ANet15Amount
nên được chuyển đổi thành A Net 15 Amount
. Regex này ở trên cũng sẽ phân tách một chuỗi camelCase, nhưng điều đó không cần thiết phải xem xét.
(?!^)([A-Z]|\d+)
tránh không gian đầu tiên và không cần cắt.
.replace(/([A-Z]|\d+)/g, " $1").trim();