首頁 > 後端開發 > C++ > 如何在C#中使用嵌入式逗號正確拆分CSV列?

如何在C#中使用嵌入式逗號正確拆分CSV列?

DDD
發布: 2025-01-26 16:56:10
原創
912 人瀏覽過

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

C#中分割包含嵌入逗號的CSV欄位

CSV檔案通常使用逗號分隔列。但是,某些列本身可能包含逗號,這在將CSV資料分割成不同的字串時會帶來挑戰。

問題:

給定一個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>
登入後複製

如何將此行分割成一個字串數組,確保「Corvallis, OR」文字保留在一個欄位中?

解:

提供的正規表示式僅適用於所有逗號都在引號外或引號內的CSV資料。為了解決這個問題,請考慮使用Microsoft.VisualBasic.FileIO命名空間中的TextFieldParser類別。此類旨在處理分隔文件,其中某些欄位用引號括起來,而其他欄位則沒有。

代碼:

<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>
登入後複製

輸出:

<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>
登入後複製

注意:

使用TextFieldParser時,需要在「新增參考.NET」標籤中新增Microsoft.VisualBasic的參考。 程式碼也使用了using語句來確保TextFieldParser被正確關閉。

以上是如何在C#中使用嵌入式逗號正確拆分CSV列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板