Rumah > pembangunan bahagian belakang > C++ > Bagaimana cara memecah lajur CSV dengan koma tertanam di C#?

Bagaimana cara memecah lajur CSV dengan koma tertanam di C#?

DDD
Lepaskan: 2025-01-26 16:56:10
asal
912 orang telah melayarinya

How to Properly Split CSV Columns with Embedded Commas in C#?

Pisah lajur CSV yang mengandungi koma terbenam dalam C#

Fail CSV biasanya menggunakan koma untuk memisahkan lajur. Walau bagaimanapun, sesetengah lajur sendiri mungkin mengandungi koma, yang boleh mencipta cabaran apabila memisahkan data CSV kepada rentetan yang berbeza.

Soalan:

Diberikan baris CSV:

<code>2,1016,7/31/2008 14:22,Geoff Dalgas,6/5/2011 22:21,http://stackoverflow.com,"Corvallis, OR",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34</code>
Salin selepas log masuk

Bagaimanakah saya boleh membahagikan baris ini kepada tatasusunan rentetan, memastikan bahawa teks "Corvallis, OR" kekal dalam satu medan?

Penyelesaian:

Ungkapan biasa yang disediakan hanya berfungsi pada data CSV dengan semua koma berada di luar atau dalam petikan. Untuk menyelesaikan masalah ini, pertimbangkan untuk menggunakan kelas Microsoft.VisualBasic.FileIO dalam ruang nama TextFieldParser. Kelas ini direka bentuk untuk mengendalikan fail terhad di mana sesetengah medan disertakan dalam petikan dan yang lain tidak.

Kod:

<code class="language-csharp">using Microsoft.VisualBasic.FileIO;

// ...

string csv = "2,1016,7/31/2008 14:22,Geoff Dalgas,6/5/2011 22:21,http://stackoverflow.com,\"Corvallis, OR\",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34";

using (TextFieldParser parser = new TextFieldParser(new StringReader(csv)))
{
    parser.HasFieldsEnclosedInQuotes = true;
    parser.SetDelimiters(",");

    while (!parser.EndOfData)
    {
        string[] fields = parser.ReadFields();
        foreach (string field in fields)
        {
            Console.WriteLine(field);
        }
    }
}</code>
Salin selepas log masuk

Output:

<code>2
1016
7/31/2008 14:22
Geoff Dalgas
6/5/2011 22:21
http://stackoverflow.com
Corvallis, OR
7679
351
81
b437f461b3fd27387c5d8ab47a293d35
34</code>
Salin selepas log masuk

Nota:

Apabila menggunakan TextFieldParser, anda perlu menambah rujukan kepada Microsoft.VisualBasic dalam tab "Tambah Rujukan.NET". Kod ini juga menggunakan pernyataan using untuk memastikan TextFieldParser ditutup dengan betul.

Atas ialah kandungan terperinci Bagaimana cara memecah lajur CSV dengan koma tertanam di C#?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan