Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C# Regex Boleh Memisahkan Rentetan dengan Petikan Dalaman Koma?

Bagaimanakah C# Regex Boleh Memisahkan Rentetan dengan Petikan Dalaman Koma?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-07 21:10:45152semak imbas

How Can C# Regex Split Strings with Commas Inside Quotes?

Pemisahan rentetan ungkapan biasa C#: koma di luar tanda petikan

Mengendalikan rentetan yang mengandungi koma terbenam boleh mencabar menggunakan kaedah pemisahan berasaskan koma tradisional. Artikel ini menunjukkan penyelesaian menggunakan C# dan ungkapan biasa untuk memisahkan rentetan yang mengandungi koma yang mungkin dikelilingi oleh petikan.

Pernyataan Masalah:

Pertimbangkan rentetan berikut yang mewakili coretan kod SQL:

<code>('ABCDEFG', 123542, 'XYZ 99,9')</code>

Matlamatnya adalah untuk memisahkan rentetan ini kepada tiga bahagian berbeza:

  1. 'ABCDEFG'
  2. 123542
  3. 'XYZ 99,9'

Cabaran timbul kerana koma dalam parameter ketiga ("XYZ 99,9") tidak boleh dianggap sebagai pemisah.

Penyelesaian ungkapan biasa:

Untuk menyelesaikan masalah ini, kita boleh menggunakan ungkapan biasa yang hanya sepadan dengan koma jika ia didahului dengan bilangan petikan tunggal genap. Mod ini memastikan koma dalam petikan tidak dipisahkan.

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

Penggunaan:

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

Penjelasan:

  • "," sepadan dengan mana-mana koma dalam rentetan.
  • (?=( memulakan penegasan memandang ke hadapan.
  • (?:[^']'[^']')* sepadan dengan sebarang bilangan jujukan aksara bukan petikan tunggal, diikuti dengan aksara petikan tunggal.
  • [^']* sepadan dengan sebarang bilangan aksara bukan petikan tunggal.
  • $ sepadan dengan hujung rentetan.

Output:

Output tatasusunan hasil adalah seperti berikut:

<code>{"'ABCDEFG'", "123542", "'XYZ 99,9'"}</code>

Ini menunjukkan kejayaan membelah rentetan berdasarkan koma di luar petikan sambil mengekalkan hujah yang dipetik utuh.

Atas ialah kandungan terperinci Bagaimanakah C# Regex Boleh Memisahkan Rentetan dengan Petikan Dalaman Koma?. 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