在大多数情况下,CSV文件是带有逗号分隔的记录的文本文件.但是,有时这些文件将以分号分隔.(如果区域设置将小数分隔符设置为逗号,Excel将在保存CSV时使用分号分隔符 - 这在欧洲很常见.参考:http: //en.wikipedia.org/wiki/Comma-separated_values#Application_support)
我的问题是,让程序猜测是将逗号分隔还是以分号分隔的最佳方法是什么?
例如,像1,1; 1,1的线可能是模糊的.它可以解释为逗号分隔为:1 1; 1(字符串)1
或分号分隔为1,1 1,1
到目前为止,我最好的猜测是尝试使用和解析文件; 分隔符,然后选择具有与第一行相同长度的行的解析(通常是标题行).如果两者具有相同的行数,请选择具有更多列的行.这样做的主要缺点是额外的开销.
思考?
我有一种情况,我必须解析来自不同来源的CSV文件,解析代码非常简单明了。
String csvFile = "/Users/csv/country.csv";
String line = "";
String cvsSplitBy = ",";
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
// use comma as separator
String[] country = line.split(cvsSplitBy);
System.out.println("Country [code= " + country[4] + " , name=" + country[5] + "]");
}
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我的问题来自CSV分隔符,我有很多不同的格式,,有时是有时是;
有什么方法可以在解析文件之前确定定界符