在保存数据到 CSV 文件时,如果数据中包含逗号,应该对包含逗号的数据进行处理,以避免它被误认为是字段分隔符。最常见的做法是:
- 使用双引号将包含逗号的数据包裹起来。
- 如果数据本身包含双引号,那么需要对双引号进行转义(通常是两个连续的双引号 “”)。
以下是一个处理包含逗号和双引号的 CSV 文件写入示例:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class CsvWriter {
public static void saveDataToCSV(String[] data, String filePath) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
for (String field : data) {
// 如果字段中包含逗号或双引号,就需要处理
if (field.contains(",") || field.contains("\"")) {
// 替换双引号为两个双引号
field = "\"" + field.replace("\"", "\"\"") + "\"";
}
// 写入字段到CSV文件,并添加逗号分隔
writer.write(field + ",");
}
writer.newLine(); // 换行
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 示例数据,其中包含逗号和双引号
String[] data = {"John Doe", "123 Main St, Apt 4B", "She said \"Hello!\"", "25"};
// 保存数据到CSV文件
saveDataToCSV(data, "output.csv");
}
}
-
检查数据中是否包含逗号或双引号:
field.contains(“,”) 检查数据是否包含逗号。
field.contains(“”") 检查数据是否包含双引号。 -
处理包含逗号或双引号的数据:
如果数据中包含逗号或双引号,使用双引号将数据包裹起来。
使用 field.replace(“”“, “””") 处理字符串中的双引号,将每个双引号替换为两个双引号(这是 CSV 标准要求的做法)。 -
写入 CSV 文件:
将每个字段通过逗号分隔写入 CSV 文件。
writer.write(field + “,”); 将每个字段写入文件,并加上逗号分隔符。
writer.newLine(); 用于写入一行数据后换行。
生成的 CSV 文件内容