2013-04-12 38 views
1

我正在使用scanner.delimiter拆分我的csv,分隔符是“,”。不过,我有一些数据,包括像“Monsters,Inc.”这样的数据中的逗号。如何在Java中的csv数据中处理逗号

但是,如果我将分隔符设置为“\”,那么它会崩溃。

想法不要求我写我自己的scanner.delimiter方法吗?

+1

有许多现有的CSV解析器库。你应该使用一个。 –

+0

[将使用String.split()将文本分隔符导出为csv文件)(http://stackoverflow.com/questions/15738918/splitting-a-csv-file-with-quotes-as-text -delimiter-using-string-split) –

回答

1

我不认为scanner.delimiter将适用于这类问题。 如果您的数据中存在额外的逗号,则可以使用正则表达式或代码来解决此类问题,同样使用类似答案/问题中提到的String.split。 如果您没有报价,那么您确实没有什么可以做的。

在stackoverflow上也有类似的例子。 例如,我想这一个适用于您:

Splitting a csv file with quotes as text-delimiter using String.split()

使用分割

public static void main(String[] args) { 
    String s = "Sachin,,M,\"Maths,Science,English\",Need to improve in these subjects."; 
    String[] splitted = s.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"); 
    System.out.println(Arrays.toString(splitted)); 
} 

使用自定义代码

public static ArrayList<String> customSplitSpecific(String s) 
{ 
    ArrayList<String> words = new ArrayList<String>(); 
    boolean notInsideComma = true; 
    int start =0, end=0; 
    for(int i=0; i<s.length()-1; i++) 
    { 
     if(s.charAt(i)==',' && notInsideComma) 
     { 
      words.add(s.substring(start,i)); 
      start = i+1;     
     } 
     else if(s.charAt(i)=='"') 
     notInsideComma=!notInsideComma; 
    } 
    words.add(s.substring(start)); 
    return words; 
} 
+0

不要复制另一个问题的答案,只是评论指出它是重复的。 –

+0

谢谢,只是做到了! –