java - CSVFormat 在标题中添加引号
问题描述
我正在使用 apache.commons.csv 创建一个 CSV 文件。生成文件时,我想用该方法解析一个标题.withHeader()
。我解析的值应该有像“FILENAME”这样的引号。为此,我想使用枚举类。但是,我不太确定在名称周围添加引号是如何工作的。我测试了它并使用该代码:
private enum Header{
FILENAME("\"FILENAME\""),
TEST("\"Test\"");
private final String string;
Header(String string){
this.string = string;
}
}
public void addHeader(File outFile) throws IOException{
CSVPrinter printer = new CSVPrinter(outFile, CSVFormat.DEFAULT.withHeader(Header.class));
}
但是,当outfile
创建它时,它只包含不带引号的标题。有谁知道如何解决它?我知道我使用字符串数组作为标题,但我想避免这种情况,因为我有很多值,字符串会变得很长。
解决方案
这是因为它的withHeader(Header.class)
实现方式,它使用 Enums 的.name()
方法将枚举值作为字符串获取,从而将实际的枚举值获取为 string: FILENAME
not "\"FILENAME\""
。要在 csv 中获取双引号,您可以使用这样的字符串数组:
CSVPrinter printer = new CSVPrinter(new FileWriter(outFile), CSVFormat.DEFAULT.withHeader("\"FILENAME\"", "\"TEST\""));
推荐阅读
- python - 在新函数中调用前一个函数
- html - 我应该使用哪些工具来获得网站所有权?
- python - 根据外生数组值更改数据帧行
- python - 如何在 Pycharm 上成功加载 matplotlib
- python - 在目录中创建文件
- flutter - Flutter:在日历上自定义颜色
- javascript - 如何在 PHP/Javascript 中转义双引号、双引号内、单引号内?
- android - Coroutinescope 启动但数据未更新
- android - 协程解释
- android-studio - Android Studio 无法找到 adb & 只能使用 skd gphone x86 作为 AVD