確かにあなたのためにこれを行うAPIのヒープがあるでしょうが、そのような単純なケースのために自分自身ではどうですか?それはあなたに依存性を保存します。これはどんなサイズのプロジェクトでも良いことです。
Metadata
には、コンマで区切られた文字列を結合するtoCsvRow()
メソッドを作成します。
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")));
EDIT あなたはあなたの処分でのJava 8とストリームAPIを持っているとして、これは伝統的なリストを使用して、ほぼ同じくらい簡単になりそう幸運すべきではありません。 CSVWriterを使用することにより
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);
}
なぜでしょうか。 javacsvはどうですか? – Satya