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
Susan Sarandonasal
2024-12-02 02:21:10535semak imbas

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

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

123
test
444
"don't split
 this"
more test
1

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(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

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)  ,  (?=  (?:  [^\"]*  \"  [^\"]*  \"  )*  [^\"]*  $  )");

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!

Kenyataan:
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