2013-04-12 39 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

謝謝,只是做到了! –