Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C# Regex Boleh Menyelesaikan Pemisahan Rentetan dengan Koma sebagai Pembatas, Kecuali Dalam Petikan?

Bagaimanakah C# Regex Boleh Menyelesaikan Pemisahan Rentetan dengan Koma sebagai Pembatas, Kecuali Dalam Petikan?

DDD
DDDasal
2025-01-07 20:51:41187semak imbas

How Can C# Regex Solve String Splitting with Commas as Delimiters, Except Within Quotes?

Menguasai Pemisahan Rentetan dalam C# dengan Corak Kompleks Menggunakan Ungkapan Biasa

Artikel ini menangani cabaran pengaturcaraan biasa: membelah rentetan menggunakan koma sebagai pembatas, tetapi hanya apabila koma tersebut tidak disertakan dalam tanda petikan. Kaedah pemisahan rentetan standard gagal apabila berurusan dengan struktur data yang tidak teratur tersebut.

Penyelesaian Regex

Penyelesaian terletak pada kuasa ungkapan biasa. Corak regex berikut berkesan mengenal pasti dan mengasingkan koma di luar bahagian yang disebut:

<code class="language-csharp">",(?=(?:[^']*'[^']*')*[^']*$)"</code>

Corak ini bijak mencari koma diikuti dengan bilangan petikan tunggal yang genap dalam rentetan yang tinggal. Ini memastikan koma dalam bahagian yang dipetik diabaikan.

Menggunakan corak ini untuk membelah rentetan adalah mudah:

<code class="language-csharp">var result = Regex.Split(inputString, ",(?=(?:[^']*'[^']*')*[^']*$)");</code>

Tatasusunan result kemudiannya akan mengandungi elemen yang dikehendaki dengan tepat:

  • 'ABCDEFG'
  • 123542
  • 'XYZ 99,9'

Ringkasnya

Ekspresi biasa menawarkan penyelesaian yang mantap dan fleksibel untuk tugasan manipulasi rentetan yang melibatkan corak yang kompleks. Kaedah ini menyediakan kawalan yang tepat, membolehkan pemisahan dan pengekstrakan elemen yang tepat daripada format rentetan yang paling tidak konvensional sekalipun. Teknik ini tidak ternilai untuk mengendalikan data dengan pembatas tidak teratur.

Atas ialah kandungan terperinci Bagaimanakah C# Regex Boleh Menyelesaikan Pemisahan Rentetan dengan Koma sebagai Pembatas, Kecuali Dalam 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