2015-11-20 62 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