2012-02-02 85 views
3

我設法根據逗號分割CSV文件。我通過放置一個虛擬字符串來實現這一點,然後根據虛擬字符串進行分割。Java - 將CSV文件拆分爲數組

然而,CSV文件中包含的東西,如:

something, something, something 
something, something, something 

因此,那裏是一個新的生產線,每條線的姓氏和價值觀得到合併到自己的字符串。我該如何解決這個問題?我試過把我的虛擬字符串放在\n被發現分裂它的基礎上,但沒有成功。

幫助?

+0

你爲什麼不直接拆分使用逗號?無論如何,發佈http://sscce.org/以獲得更好的幫助。 – jalopaba 2012-02-02 11:59:37

回答

5

我強烈建議你不要重新發明輪子:)。與已有的圖書館之一去處理CSV文件,如:OpenCSV

4

我不明白你爲什麼需要一個虛擬字符串。爲什麼不用逗號分割?

BufferedReader in = new BufferedReader(new FileReader("file.csv")); 
String line; 
while ((line = in.readLine()) != null) { 
    String[] fields = line.split(","); 
} 
+0

這並不能幫助我根據線條進行分割。這是個問題。 – mino 2012-02-02 12:05:54

+2

你應該閱讀每一行,並分別分開每一行。那麼你就不會有行合併的問題。 – dogbane 2012-02-02 12:21:06

-1

使用跟隨着它會分裂線

   String[] a=scanner.next().split(" "); 
1

按你所提到的虛擬的字符串,它可以很容易地處理與幫助現有的圖書館。我想推薦開源庫uniVocity-parsers,它可以處理簡化的API,具有非凡的性能和靈活性。

只是指的幾行代碼來讀取CSV數據到內存陣列:

private static void parseCSV() throws FileNotFoundException { 
    CsvParser parser = new CsvParser(new CsvParserSettings()); 
    List<String[]> parsedData = parser.parseAll(new FileReader("/examples/example.csv")); 

    for (String[] row : parsedData) { 
     StringBuilder strBuilder = new StringBuilder(); 
     for (String col : row) { 
      strBuilder.append(col).append("\t"); 
     } 
     System.out.println(strBuilder); 
    } 
}