Bagaimana untuk Memisahkan Rentetan Dibatasi Koma dengan Petikan Terbenam?
Memisahkan Teks Dibatasi dengan Petikan Terbenam
Apabila menghuraikan teks yang mengikut format yang dibataskan koma, mengendalikan petikan terbenam boleh menimbulkan cabaran. Artikel ini menangani isu ini, menyediakan penyelesaian untuk memisahkan rentetan pada koma sambil mengekalkan integriti teks yang disertakan dalam petikan.
Pertimbangkan teks berikut:
123,test,444,"don't split, this",more test,1
Menggunakan Rentetan asas. kaedah split(",") akan menghasilkan keputusan berikut:
123 test 444 "don't split this" more test 1
Walau bagaimanapun, matlamatnya adalah untuk mengekalkan teks yang dipetik sebagai entiti tunggal:
123 test 444 "don't split, this" more test 1
Untuk mencapai ini, kami menggunakan penyelesaian berasaskan ungkapan biasa:
str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Ungkapan ini memisahkan rentetan berdasarkan koma yang diikuti dengan bilangan genap petikan berganda. Ini memastikan koma dalam teks yang dipetik diabaikan sebagai pembatas.
Memahami Ungkapan Biasa:
- ,(?=( - Memadankan koma diikuti dengan pandang ke hadapan penegasan.
- (?:[^"]*"[^"]*")*: Memadankan sifar atau lebih ulangan bagi corak teks petikan berikut: "[^"]*" (petikan tunggal diikuti oleh aksara bukan petikan, diikuti dengan petikan lain).
- [^"]*: Memadankan sifar atau lebih aksara bukan petikan sebelum petikan.
- $[^"]*$: Menegaskan bahawa penghujung rentetan dicapai selepas memadankan aksara bukan petikan.
Sintaks Alternatif:
Untuk kebolehbacaan, anda juga boleh memecahkan ungkapan biasa kepada berbilang baris menggunakan (?x) pengubah suai:
String[] arr = str.split("(?x) " + ", " + // Split on comma "(?= " + // Followed by " (?: " + // Start a non-capture group " [^\"]* " + // 0 or more non-quote characters " \" " + // 1 quote " [^\"]* " + // 0 or more non-quote characters " \" " + // 1 quote " )* " + // 0 or more repetition of non-capture group (multiple of 2 quotes will be even) " [^\"]* " + // Finally 0 or more non-quotes " $ " + // Till the end (This is necessary, else every comma will satisfy the condition) ") " // End look-ahead );
Pendekatan ini memastikan pemisahan teks yang dibataskan dengan tepat, mengambil kira kedua-dua koma dan petikan terbenam.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Dibatasi Koma dengan Petikan Terbenam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?

Iceberg: Masa Depan Jadual Data Tasik

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?
