我正在使用scanner.delimiter拆分我的csv,分隔符是「,」。不過,我有一些數據,包括像「Monsters,Inc.」這樣的數據中的逗號。如何在Java中的csv數據中處理逗號
但是,如果我將分隔符設置爲「\」,那麼它會崩潰。
想法不要求我寫我自己的scanner.delimiter方法嗎?
我正在使用scanner.delimiter拆分我的csv,分隔符是「,」。不過,我有一些數據,包括像「Monsters,Inc.」這樣的數據中的逗號。如何在Java中的csv數據中處理逗號
但是,如果我將分隔符設置爲「\」,那麼它會崩潰。
想法不要求我寫我自己的scanner.delimiter方法嗎?
我不認爲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;
}
不要複製另一個問題的答案,只是評論指出它是重複的。 –
謝謝,只是做到了! –
有許多現有的CSV解析器庫。你應該使用一個。 –
[將使用String.split()將文本分隔符導出爲csv文件)(http://stackoverflow.com/questions/15738918/splitting-a-csv-file-with-quotes-as-text -delimiter-using-string-split) –