首页 > 解决方案 > 双引号不关闭Java

问题描述

J 有 CSV 文件的第一行是这样的:

LOC;11000;"自动化"有效";10;;

当我尝试用 CSVReader 阅读它时,我只有这个:

本地;11000

我知道问题是双引号,我该如何删除 CSV 上的所有双引号?

我尝试替换方法是dosnt工作。

我的代码是:

while ((line = reader.readNext()) != null) {

    for(int i = 0; i<line.length; i++) {

        if (line[i].contains("\"")){

            line[i] = line[i].replace("\"", ""); // same result with replaceAll method
        }

        System.out.print(line[i]+" ");
    }
}

谢谢你。

标签: javacsvdouble-quotescsvreader

解决方案


正如 Brendan 所说,“ if (line[i].contains(""")){" 行是多余的。无论如何,查找和替换方法都会扫描文本,您不需要执行两次。

您的替换语句有效,我试过了,但这不是问题:

jshell> var text = "LOC;11000;\"Autorisation \"valide\";10;;";
text ==> "LOC;11000;\"Autorisation \"valide\";10;;"

jshell> text.contains("\"")
$2 ==> true

jshell> text.replace("\"","");
$3 ==> "LOC;11000;Autorisation valide;10;;"

注意 line 不是一个列表/可迭代的,它是一个字符串,所以你可以在线替换它。

while ((line = reader.readNext()) != null) {
     line = line.replaceAll("[\"\\\\]","");  
     System.out.print(line);
}

在此处输入图像描述


推荐阅读