java - 如何将字符串中的逗号添加到csv中的单个单元格
问题描述
当我尝试将一些文本写入 CSV 时,我发现它在文本中的第一个逗号处剪切了文本,因此将字符串写入 2 个不同的单元格而不是 1。无论如何围绕这个问题,因为文本会从网络上抓取而不是输入
功能代码的要点是
String text = "hello, this is me";
try {
PrintWriter csv = new PrintWriter(new File("test.csv"));
csv.write(text);
csv.close();
}
catch(Exception e) {
}
解决方案
测试.csv
a;b;c
d;e;f
测试2.csv
a;b;c
,;e;f
Java代码使用 opencsv
:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.List;
import com.opencsv.CSVParserBuilder;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import com.opencsv.CSVWriter;
public class Sof {
public static void main(String[] args) {
CSVReader reader;
try (CSVWriter writer = new CSVWriter(new FileWriter(new File("src/main/resources/test2.csv")), ';', Character.MIN_VALUE, '\\', "\n");) {
reader = new CSVReaderBuilder(new InputStreamReader(new FileInputStream("src/main/resources/test.csv"), StandardCharsets.UTF_8))
.withCSVParser(new CSVParserBuilder().withSeparator(';').build()).build();
final List<String[]> csvBody = reader.readAll();
System.out.println(csvBody.size());
csvBody.get(1)[0] = ",";
writer.writeAll(csvBody);
writer.flush();
reader.close();
} catch (final IOException e1) {
System.err.println(e1);
}
}
}