2016-02-16 17 views
0

我有以下問題:找到一個模式,取代它的一個元素

我試圖分裂一個CSV文件中的行,但事情是,有時我閱讀下面一行:

string input = "a,b,c,d,\"V=12.503,I=0.194\",e,f" 

我用下面的代碼

string[] SplittedLine= input.split(','); 

的結果是,我得到一個額外的列,因爲數據\"V=12.503,I=0.194\"裏面有一個逗號,但是當我打開該CSV excel文件我注意到,EXCE l不會添加額外的列,因爲它不會將該數據分成兩個不同的數據。考慮到這種情況,我該如何正確拆分這個CSV文件?

回答

0

您在CSV的「單元格」中遇到逗號,按約定(但不是任何標準)通過用雙引號包裝單元格數據來轉義。您還需要注意,引號轉義的字符串可以包含引號字面值。

比方說,你有一個名字列和一個人的名字是

喬納森·「傑克」·史密斯,小

將被編碼爲

「喬納森‘’傑克「」史密斯,小「

你當然可以改進你的代碼來處理這些情況。然而,這個問題之前已經解決了。如果你不想重新發明輪子,有許多可靠的開源庫可以處理解析CSV文件的頭痛問題。我使用的是

http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

+0

感謝您的快速回答。這裏的事情是我已經在使用我自己的庫了,我發現了這個問題。我正在尋找一種方法來檢測他的案件。我正在考慮尋找下面的模式\「字符串\」,並替換其他字符的昏迷,但我不知道很多模式。 –

+0

這是行不通的。你會以''a,b,c,d,V = 12.503,I = 0.194,e,f「'結尾,它的列數多於預期。您需要正確處理這樣一個事實:單元格中的雙引號表示雙引號之間的逗號不是單元分隔符,而是實際數據。 –

+0

我同意,這是我的問題,處理雙引號... –