我正在使用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) –