java - 双引号不关闭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]+" ");
}
}
谢谢你。
解决方案
正如 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);
}
推荐阅读
- python - python 如何在 __mul__ 和 __rmul__ 之间进行选择
- flutter - 解决 print 匹配但使用 .contain 时不匹配的单词
- flutter - google_ml_kit 人脸检测空安全错误
- nginx - proxy_pass 一个特定的查询字符串
- entity-framework - 实体框架 LINQ 内部联接创建了一个子查询而不是普通联接。你知道这可能的原因吗?
- spring-kafka - 记录在 FilteringBatchMessageListenerAdapter 中被一一过滤
- javascript - 创建一个 MarkDown 注释,如何在 JS 中实现按钮之间的切换?
- excel - 如何在 xls 模板中对多个 for-each 组进行排序?
- javascript - 即使函数有名称,组件定义也缺少显示名称(反应/显示名称)
- python - requests_html 渲染向下滚动,脚本不起作用