最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java中 StringBuilder 怎样拼装 CSV 文件行数据
时间:2026-07-21 09:20:53 编辑:袖梨 来源:一聚教程网
用StringBuilder拼装CSV行需严格遵循RFC 4180:字段含逗号、换行或双引号时须加双引号,内部双引号转义为两个双引号;提供escapeCsvField方法统一处理,并在拼接后删末尾逗号、加换行符。
用 StringBuilder 拼装 CSV 行数据,核心是正确处理字段中的逗号、换行符和双引号——不能简单用逗号连接,必须按 RFC 4180 规范转义。
字段内容含特殊字符时必须加双引号并转义
CSV 中,如果字段本身包含逗号、换行(n)或双引号("),整个字段必须用双引号包裹;若字段内有双引号,需变成两个双引号("")。
- 原始字段:
张三,"北京,朝阳区"→ 拼装后应为:"张三",""北京,朝阳区"" - 原始字段:
备注:他说"很好"→ 转义后:"备注:他说""很好"""
推荐封装一个安全的 CSV 字段转义方法
每次拼接前先对单个字段做标准化处理,避免逻辑散落:
public static String escapeCsvField(String field) { if (field == null) return ""; // 先替换内部双引号为两个双引号 String escaped = field.replace(""", """"); // 如果含逗号、换行或本身带双引号,就整体加双引号 if (escaped.contains(",") || escaped.contains("n") || escaped.contains(""") || escaped.contains("r")) { return """ + escaped + """; } return escaped;}
用 StringBuilder 逐字段拼接,注意逗号和换行位置
不要在开头或结尾多加逗号,换行符放在整行末尾(不是每个字段后):
立即学习“Java免费学习笔记(深入)”;
- 初始化
StringBuilder sb = new StringBuilder(); - 对每个字段调用
escapeCsvField(),再用sb.append(escaped).append(","); - 最后去掉末尾多余逗号:
if (sb.length() > 0) sb.setLength(sb.length() - 1); - 追加换行:
sb.append("n");
完整示例行拼装示例
比如拼一行用户数据:id=123, name="张三", city="北京,朝阳区", remark="他说"棒极了""
StringBuilder sb = new StringBuilder();sb.append(escapeCsvField("123")).append(",");sb.append(escapeCsvField("张三")).append(",");sb.append(escapeCsvField("北京,朝阳区")).append(",");sb.append(escapeCsvField("他说"棒极了""));if (sb.length() > 0) sb.setLength(sb.length() - 1); // 删末尾逗号sb.append("n");// 结果:"123","张三","北京,朝阳区","他说""棒极了"""
不复杂但容易忽略细节。