知道CSV文件的分隔符

| 这可能是一个简单的问题,但我找不到令人满意的答案。我正在用Java写一个类,该类需要接收一个.csv文件,该文件在三列中均包含双打。显然.csv文件使用逗号作为分隔符,但是当我尝试使用扫描仪设置它们时,扫描仪什么也找不到。有什么建议吗?
Scanner s = null;
try {
  s = new Scanner(source);
  //s.useDelimiter(\"[\\\\s,\\r\\n]+\"); //This one works if I am using a .txt file
  //s.useDelimiter(\", \\n\"); // This is what I thought would work for a .csv file
  ...
} catch (FileNotFoundException e) {
  System.err.format(\"FileNotFoundException: %s%s\", e);
} catch (IOException e) {
  System.err.format(\"IOException: %s%n\", e);
}
输入示例如下: 12.3 11.2 27.0 0.5 97.1 18.3 等等 感谢您的时间! 编辑:固定!找到正确的定界符,并意识到我正在使用hasNextInt()而不是hasNextDouble()。 / facepalm     
已邀请:
考虑以下:
first,second,\"the third\",fourth,\"the,fifth\"
应该只有五个-最后一个逗号在引号中,不要将其分开。 不要重新发明轮子。有开源库可以处理此行为。 快速的Google搜索产生了http://opencsv.sourceforge.net/,我敢肯定还有其他人。     
如果您要阅读每个项目,请尝试:
s.useDelimiter(\",\");
然后,
s.next()
将从CSV返回一个项目。     
为什么您的CSV分隔符中有\\ n?如果CSV和TXT文件具有相同的内容,则Java没有区别。 我想你会想要
s.useDelimiter(\",\");
要么
s.useDelimiter(\"[\\\\s]+,[\\\\s\\r\\n]*\");
    
有几种解决方法: 方法1: 在文件扩展名中使用条件语句(if-else / switch)。
if(ext == \'csv\') {
  s.useDelimiter(\", \\n\");
} else if(ext == \'txt\') {
  s.useDelimiter(\"[\\\\s,\\r\\n]+\");
}
方法2: 作为其他答案建议,使用此:
s.useDelimiter(\",\");
    

要回复问题请先登录注册