一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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","张三","北京,朝阳区","他说""棒极了"""

不复杂但容易忽略细节。

热门栏目