如何移除CSV文件中的引号与分隔逗号以简化Java解析?
处理CSV文件:移除引号和分隔逗号并适配Java解析
我来帮你搞定这个CSV处理的问题!要移除所有引号和分隔用的逗号,同时方便后续Java解析,这里有两种实用的方案供你选择:
方案一:直接移除所有引号和逗号(简单粗暴型)
如果你的CSV里没有字段本身包含逗号的情况,或者你希望彻底清除所有逗号,这个方法最快捷。它会逐行读取CSV,直接替换掉所有双引号和逗号,输出干净的文本内容。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class SimpleCsvCleaner { public static void main(String[] args) { String inputCsv = "你的输入文件路径.csv"; String outputFile = "处理后的文件路径.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(inputCsv)); BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) { String line; while ((line = reader.readLine()) != null) { // 先移除所有双引号 String noQuotes = line.replaceAll("\"", ""); // 再移除所有逗号 String cleanLine = noQuotes.replaceAll(",", ""); writer.write(cleanLine); writer.newLine(); } System.out.println("文件处理完成,已生成无引号无逗号的干净文本!"); } catch (IOException e) { System.err.println("处理文件时出错:" + e.getMessage()); e.printStackTrace(); } } }
方案二:精准移除分隔用的逗号(保留字段内的特殊字符)
如果你的CSV里存在字段本身包含逗号的情况(比如"张三,李四","北京"),直接替换所有逗号会破坏字段内容。这个方案会先正确解析CSV的字段,只移除作为分隔符的逗号,保留字段内部的逗号,再拼接成连续文本。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class PreciseCsvCleaner { public static void main(String[] args) { String inputCsv = "你的输入文件路径.csv"; String outputFile = "处理后的文件路径.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(inputCsv)); BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) { String line; while ((line = reader.readLine()) != null) { // 解析一行CSV的所有字段 List<String> fields = parseCsvFields(line); // 拼接所有字段,无分隔符 String cleanLine = String.join("", fields); writer.write(cleanLine); writer.newLine(); } System.out.println("文件处理完成,已精准移除分隔逗号!"); } catch (IOException e) { System.err.println("处理文件时出错:" + e.getMessage()); e.printStackTrace(); } } // 自定义CSV字段解析方法,区分引号内的逗号和分隔逗号 private static List<String> parseCsvFields(String line) { List<String> fields = new ArrayList<>(); StringBuilder currentField = new StringBuilder(); boolean inQuotes = false; for (char c : line.toCharArray()) { if (c == '"') { // 切换引号包裹状态 inQuotes = !inQuotes; } else if (c == ',' && !inQuotes) { // 遇到分隔逗号,保存当前字段 fields.add(currentField.toString()); currentField.setLength(0); } else { // 追加字符到当前字段 currentField.append(c); } } // 添加最后一个字段 fields.add(currentField.toString()); return fields; } }
使用提示
- 处理后的文件可以直接用Java的
BufferedReader按行读取,完全不需要额外的CSV解析库,非常便捷。 - 如果需要调整输出格式(比如用空格分隔字段),只需要把
String.join("", fields)改成String.join(" ", fields)即可。
内容的提问来源于stack exchange,提问作者user7800166
相关产品推荐
相关产品推荐

