Apache Commons CSV 中的意外引用
Unexpected quoting in Apache Commons CSV
在使用具有以下 Maven 依赖性的 Apache CSV 时。我得到了意想不到的结果。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.2</version>
</dependency>
简单代码无法按预期工作。
谁能告诉我这里出了什么问题?
System.out.println(CSVFormat.DEFAULT.format("-10","10"));
实际输出:"-10",10
预期输出:-10,10
System.out.println(CSVFormat.DEFAULT.format("10","-10"));
实际输出:10,-10
预期输出:10,-10
System.out.println(CSVFormat.DEFAULT.format(".10","-10"));
实际输出:".10",-10
预期输出:.10,-10
System.out.println(CSVFormat.DEFAULT.format("+10","-10"));
实际输出:"+10",-10
预期输出:+10,-10
你上面列出的实际结果是合法的 CSV 格式(即使有引号也可以解析),但我可以看到它看起来像一个意外的输出。
这里是 CSVPrinter.java
中的 source code:
// TODO where did this rule come from?
if (newRecord && (c < '0' || (c > '9' && c < 'A') || (c > 'Z' && c < 'a') || (c > 'z'))) {
quote = true;
}
如果行中的第一项不是以字母数字字符开头,则此代码将引用该行中的第一项。
如果您浏览 class 上的 code history,您会发现此行为自存储库开始以来(2011 年 11 月 9 日)就一直存在。
我没有注意到 issue tracker, so you should open up a issue if you think the default behavior should be changed. Alternately, you could consider using a applying a QuoteMode 使用 CSVFormat.withQuoteMode()
的任何相关错误。
在使用具有以下 Maven 依赖性的 Apache CSV 时。我得到了意想不到的结果。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.2</version>
</dependency>
简单代码无法按预期工作。 谁能告诉我这里出了什么问题?
System.out.println(CSVFormat.DEFAULT.format("-10","10"));
实际输出:"-10",10
预期输出:-10,10
System.out.println(CSVFormat.DEFAULT.format("10","-10"));
实际输出:10,-10
预期输出:10,-10
System.out.println(CSVFormat.DEFAULT.format(".10","-10"));
实际输出:".10",-10
预期输出:.10,-10
System.out.println(CSVFormat.DEFAULT.format("+10","-10"));
实际输出:"+10",-10
预期输出:+10,-10
你上面列出的实际结果是合法的 CSV 格式(即使有引号也可以解析),但我可以看到它看起来像一个意外的输出。
这里是 CSVPrinter.java
中的 source code:
// TODO where did this rule come from?
if (newRecord && (c < '0' || (c > '9' && c < 'A') || (c > 'Z' && c < 'a') || (c > 'z'))) {
quote = true;
}
如果行中的第一项不是以字母数字字符开头,则此代码将引用该行中的第一项。
如果您浏览 class 上的 code history,您会发现此行为自存储库开始以来(2011 年 11 月 9 日)就一直存在。
我没有注意到 issue tracker, so you should open up a issue if you think the default behavior should be changed. Alternately, you could consider using a applying a QuoteMode 使用 CSVFormat.withQuoteMode()
的任何相关错误。