我设置了解析器以自动检测定界符
CsvParserSettings settings = new CsvParserSettings();
settings.detectFormatAutomatically();
我只有1个单一记录:47W2E2qxPs, http://usda.gov/mattis.html
我得到的:
code: 47W2E2qxPshttp url: //usda.gov/mattis.html
我希望定界符为,
,而不是:
所以我的预期结果是47W2E2qxPs
和http://usda.gov/mattis.html
。
我可以优雅地修复它吗?
库的作者。检测过程是一种启发式,它使用了从您的一部分输入的多个行收集的统计信息。因此,这在很大程度上取决于输入的大小。
其目的是处理无法轻易确定CSV格式的情况 - 例如用户将随机文件上传到您时。如果您已经知道正确的定界符是什么。
,请勿使用检测过程。在您的情况下,一排数据绝对不足以可靠地检测到定界线,尤其是在存在多个符号的情况下。除了测试检测到的定界符之前,您几乎无能为力:
:parser.beginParsing(new File("/path/to/your.csv"));
CsvFormat format = parser.getDetectedFormat();
//check if the format is sane.
下一个版本(2.6.0)将包括更多的选择来协助启发式方法,例如提供一组允许的字符作为定界数 - 在您的情况下可能会有所帮助。