Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Memisahkan Teks Dipisahkan Koma Semasa Memelihara Petikan?

Bagaimanakah Saya Boleh Memisahkan Teks Dipisahkan Koma Semasa Memelihara Petikan?

Susan Sarandon
Lepaskan: 2024-12-02 02:21:10
asal
529 orang telah melayarinya

How Can I Split Comma-Separated Text While Preserving Quotes?

Memisahkan Teks Menggunakan Koma sambil Memelihara Petikan

Apabila menghuraikan teks yang dipisahkan koma, adalah penting untuk mengendalikan situasi di mana koma muncul dalam subrentetan yang disebut, seperti contoh ini:

123,test,444,"don't split, this",more test,1
Salin selepas log masuk

Memisahkan rentetan ini pada koma menggunakan kaedah String.split(",") lalai menghasilkan:

123
test
444
"don't split
 this"
more test
1
Salin selepas log masuk

Seperti yang anda lihat, koma dalam petikan "jangan belah, ini" ditafsirkan secara salah sebagai pemisah.

Untuk menangani isu ini, pendekatan yang lebih canggih diperlukan. Dalam kes ini, kita boleh menggunakan ungkapan biasa untuk memisahkan rentetan pada koma yang tidak diikuti dengan bilangan petikan berganda genap. Ini memastikan koma di dalam subrentetan yang dipetik tidak disalah anggap sebagai pemisah.

str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Salin selepas log masuk

Ungkapan biasa ini menggunakan logik berikut:

  • (?=): Pandang ke hadapan penegasan yang memastikan:

    • (?:[^"]*"[^"]*")*: Memadankan sebarang bilangan subrentetan yang disertakan dalam petikan berganda.
    • [^"]*: Memadankan sebarang bilangan aksara bukan petikan.
    • $: Penegasan akhir rentetan.

Dalam erti kata lain, pandangan ke hadapan ini menyemak sama ada koma semasa diikuti dengan nombor genap dua kali ganda petikan dan penghujung rentetan. Jika demikian, ini menunjukkan bahawa koma tidak berada di dalam subrentetan yang dipetik dan boleh dianggap sebagai pemisah.

Anda juga boleh menggunakan yang dipermudahkan. versi ungkapan biasa:

str.split("(?x)  ,  (?=  (?:  [^\"]*  \"  [^\"]*  \"  )*  [^\"]*  $  )");
Salin selepas log masuk

Dalam versi ini, pengubah suai (?x) digunakan untuk meningkatkan kebolehbacaan ungkapan biasa dengan mengabaikan aksara ruang putih.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memisahkan Teks Dipisahkan Koma Semasa Memelihara Petikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan