2013-04-02 20 views
1

我正在嘗試遵循每個人的建議,並使用庫來滿足我的CSV編寫/解析需求。但最推薦的FileHelpers需要列映射類。但是,我只需要閱讀寫單行逗號分隔值,然後解析它們。我無法以這種簡單的方式找到使用FileHelpers或其他庫的方法。爲未知列數的CSV編寫/解析庫

例如,我做一個String testInput = "\"yoyo\",\"yaya\",\"te\"\"st\"";作爲輸入,並希望將其與價值觀yoyoyayate"st解析爲String[]

另外,我需要做相反的事情,將值寫回像這樣的字符串,如"yoyo","yaya","te"st"

有誰知道一個庫可以做到這一點,或者我可以如何使用例如FileHelpers爲此?

由於xml字段中涉及的「垃圾」字符數量(帶寬/存儲限制),我並不真的想要做xml。

回答

2

CSV reader on code project應該處理的;只需關閉文件標題並逐行使用new StringReader(line)即可。

+0

該庫還可以將數組寫入csv嗎? –

+0

@David不確定,但看到我對Vyktor的帖子的評論; *寫* CSV比*閱讀*要容易得多 –

+0

謝謝,我會接受這個答案,因爲Vyctor建議的'TextFieldParser'顯然非常慢。 –

0

對於給定的輸入/輸出,你可以做簡單的(沒有文件讀取,創建對象...):

string testInput = "\"yoyo\",\"yaya\",\"te\"\"st\""; 
    string[] values = testInput.Split(","); 

    string valuesBack = values.Join(","); 
+1

儘管所有傳言都相反,但CSV並不像「以逗號分割」那麼簡單。你會注意到,這沒有給'String []'值'yoyo','yaya','te「st'。 –

+0

當然不是。但對於給定的Q,這是A :) – kayz1

+1

如果它***沒有給出請求的輸出***,它以什麼方式是A? –

2

Microsoft.VisualBasic.FileIO.TextFieldParser應該能夠做的工作,ReadFields method其定義爲:

讀取當前行上的所有字段,將它們作爲字符串數組返回,並將光標前進到包含數據的下一行。

我找到很好的例子here

至於寫入CSV,我會使用不同的方法,我發現在stackoverflow。這似乎是最簡單的方法,不需要導入派對擴展名。

+0

謝謝,但我也需要一個編寫者將字段正確地轉換爲csv,所以這只是解決方案的一半。 –

+1

@David編寫CSV比閱讀它容易 - 特別是如果你想要所有引用的值(在這種情況下)。用'\「\」'替換'\「'並附加+ \ prepend'\」' - 完成任務。 –

+1

@David沒有CSV作家類足夠簡單,但是我添加了一個我發現的鏈接。 – Vyktor