Saya mencoba untuk membuat pipa dalam naskah yang akan membagi string PascalCase, tetapi akan lebih baik jika ini juga akan terpecah pada digit juga. Saya juga ingin membaginya dengan huruf kapital berturut-turut. Saya memiliki pipa ini, yang berfungsi dengan baik, kecuali hanya berfungsi di Chrome dan bukan Firefox, ternyata hanya Chrome yang mendukung tampilan belakang. Bagaimana bisa melakukan ini tanpa melihat ke belakang?
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;
}
Jadi misalnya string ANet15Amount
harus diubah menjadi A Net 15 Amount
. Regex ini di atas juga akan memisahkan string camelCase, tetapi itu tidak perlu dipertimbangkan.
javascript
regex
typescript
develmatik
sumber
sumber
.replace(/([A-Z]|\d+)/g, " $1").trim();
(?!^)([A-Z]|\d+)
menghindari ruang pertama dan tidak perlu langsing.Jawaban:
Bagaimana kalau cocok dengan pola yang lebih mendasar seperti ini dan bergabung dengan ruang.
Pertama saya pikir dari hanya
[A-Z][a-z]*|\d+
tapi ini akan mematahkan misalnyaABCDefg123
keA B C Defg 123
mana akan berbeda kerja untuk fungsi Anda saat ini, yang transformasi keABC Defg 123
.Masih ada sedikit perbedaan. Anda berubah
A1B2
menjadiA 1B 2
dan yang ini keA 1 B 2
tempat saya pikir yang ini akan lebih akurat, bukan.sumber
Ganti saja huruf besar
[A-Z]
atau urutan angka apa pun\d+
dengan spasi plus apa yang baru saja kami cocokkan" $1"
. Kami melewatkan huruf pertama sehingga tidak ada ruang yang akan ditambahkan pada awal string yang dihasilkan dengan menambahkan lookahead negatif pada awal string(?!^)
:Contoh:
Tampilkan cuplikan kode
sumber
Mencoba
[A-Z]?[a-z]+|[A-Z]|[0-9]+
Uji dalam generator: https://regex101.com/r/uBO0P5/1
sumber
Saya kira itu tergantung pada konvensi string yang dapat meningkatkan kompleksitas
sumber