2015-11-20 59 views
1

我有這個CSV這種格式分割CSV,我需要16件分裂,與文本的根據:的Java有兩種模式

"MY TEXT","EVER, OK",,,,,,,,,,"The, CARLO","DO","ALFA","OME, GA",, 

我有這樣的方式,但出現的情況下與內部逗號時「 OME,GA「不起作用。

String[] lineToMap = line.split(","); 

我該如何控制這種情況?

解決方案

我發現這個庫:打開CSV,在我的測試工作非常好,但我與編纂的問題(奇怪的符號,而不是像U)與像ü,ö等字符我使用德語和法語等語言。我正在用UTF-8進行測試,但沒有工作,任何想法來解決這個問題?

CSVReader reader=new CSVReader(new InputStreamReader(new FileInputStream("data/test.csv"), "UTF-8"), 
       ',', '"', 0); 
     //Read CSV line by line and use the string array as you want 
      String[] nextLine; 
      try { 
      while ((nextLine = reader.readNext()) != null) { 
       if (nextLine != null) { 
        for (String element : nextLine) { 
         System.out.println(element); 
        }     
       } 
       } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+2

爲什麼要拆分它,而不是使用CSV閱讀器? – StackFlowed

+0

抓住引號內的每一個項目。 – Emz

+0

是的,但該行表示16件,即使是空的部分,如,,,,,, =空白部分,但我需要它,我相信接下來閱讀會給你空如果它是空的任何方式 – Miofino

回答

-3

","試圖分裂代替,並在手工陣列的開始和結束時處理邊緣情況。

+0

如果有喜歡的2,4,5數值,「OK」,「將現在的工作」不會工作 – StackFlowed

+0

嗯,我希望你的CSV不混合:)它不會工作在',,,,,, ,「要麼,但這會讓他走得更遠。 –

+0

無不是他的偏移會被搞砸的情況。 – StackFlowed