其他答案告诉你为什么会有一个空值:你没有初始化你的 csvSkills 字符串。
您应该知道的另一件事是您应该为 csvSkills 使用 StringBuilder 而不是 String。在循环内附加到字符串是非常低效的。在幕后,编译器每次通过循环创建一个新的 StringBuilder 以将两个字符串连接在一起,然后将其丢弃。每次通过循环,为该迭代创建的 StringBuilder 的大小都会变得越来越大。您想对所有附加使用单个 StringBuilder 实例。
StringBuilder csvSkills = new StringBuilder();
for (String s: request.getParameterValues("chkSkills")){
if (csvSkills.length > 0) csvSkills.append(",");
csvSkills.append(s);
}
return csvSkills.toString();
我是处理 CSV 的免费开源 Java 实用程序的作者。我建议为此使用Ostermiller CSV 库。除了处理仅在需要时附加逗号的逻辑外,它还将在您附加的字段包含引号或逗号的情况下处理引用和转义。
StringWriter writer = new StringWriter();
CSVPrinter csvSkills = new ExcelCsvPrinter(writer);
for (String s: request.getParameterValues("chkSkills")){
csvSkills.write(s);
}
return writer.toString();