当然,会有一堆API可以为您做到这一点,但是为什么不自己做这么简单的案例呢?它将为您节省依赖项,这对于任何规模的任何项目来说都是一件好事。
创建一个方法,用于联接以逗号分隔的字符串。toCsvRow()
Metadata
public String toCsvRow() {
return Stream.of(page, document, loan, type)
.map(value -> value.replaceAll("\"", "\"\""))
.map(value -> Stream.of("\"", ",").anyMatch(value::contains) ? "\"" + value + "\"" : value)
.collect(Collectors.joining(","));
}
为由新行分隔的每个对象收集此方法的结果。Metadata
String recordAsCsv = record.stream()
.map(Metadata::toCsvRow)
.collect(Collectors.joining(System.getProperty("line.separator")));
编辑如果您没有幸运地拥有Java 8和Stream API,那么使用传统列表几乎同样简单。
public String toCsvRow() {
String csvRow = "";
for (String value : Arrays.asList(page, document, loan, type)) {
String processed = value;
if (value.contains("\"") || value.contains(",")) {
processed = "\"" + value.replaceAll("\"", "\"\"") + "\"";
}
csvRow += "," + processed;
}
return csvRow.substring(1);
}