2012-11-01 24 views
2

我使用超級CSV來分析管道(「|」)分隔文件。該文件不使用「文本限定符」,或者Super CSV稱爲引號字符。問題在於超級CSV requires是一個引號字符。我看不到一種方法來跳過這個,或者提供一個空字符。目前我傳遞了一些古怪的unicode字符,希望它永遠不會出現在輸入文件中。如何在不使用引號字符的分隔文件上使用Super CSV?

有沒有辦法讓超級CSV解析文件而不使用引號字符?

+0

如果該API不接受'|'作爲分隔符,則會被破壞。但我懷疑它的確如此。 –

+0

不,引號字符用於處理嵌入的分隔符(在本例中爲'|')。我會爲你考慮這個。 –

回答

2

我猜你沒有控制如何解析文件被寫入,並且它永遠不會包含數據中的嵌入管道字符?

我可以看到的解決方案是:

  • 使用的是不會出現在你的文件(如你建議)的字符。這有點狡猾,但會起作用。

  • 當您構建您的閱讀器時提供您自己的Tokenizer(您可以複製Super CSV implementation並刪除引用功能)。

  • 給我們發送一個feature request,我們會考慮添加它。它可能只是一個添加另一個首選項而禁用分析時的引用的情況。

我會想一想,看看我能否想出實現這個目標的最佳方法。

+2

我認爲使用不支持引用的單獨策略是更好的選擇,因爲這會提高閱讀速度 - string.split()足以標記化..它應該是框架的一部分 –

-1

使用分隔符作爲引號字符。例如:

CsvPreference cp = new CsvPreference('|'/*quote char*/,'|'/*delimiter char*/, "\n"); 
相關問題