我的csv文件包含管道分隔符,数据在csv中如下所示,
ID| Name| details
1| xx| {
"user":"xx",
"email":"xxx@xxx.in"
}
如果我在记事本中编辑 csv,该值显示为,
1|xx|"{
""user"":""z"",
""email"":""e""
}"|"
在我的程序中,我根据管道分隔符拆分值。问题是,当我从csv获取详细信息的值时,它在每个值后附加了额外的分隔符("),这导致我的程序失败。
任何人都可以提供一种解决方案来消除额外的分隔符并仅获得我在 csv 中提供的确切值吗?
读完一行后:
line.replaceAll( """, "" );
仅当数据中没有任何引号时,此操作才有效。一般来说,它会更复杂 - 解析。
(当然,我指的是我们之前看到的片段,当时行阅读没有以包含结束"}"的行结束。
如果你想保留一个报价,
line.replaceAll( """", """ );
我不确定尾随}"|"
- 为什么第一个数据样本中没有?当然,您可以使用子字符串简单地丢弃最后 3 个字符。
如果通过执行以下操作检查组中的最后一行:
if( inline.endsWith( "}"|"" ) ){
inline = "}"";
}
现在这三个角色消失了,你知道那个小组已经结束了。然后,删除其他引号,或将双引号替换为单引号。
第三个字段也将括在引号中。您可以使用以下命令删除这些内容
String[] cells = line.split( "|" );
cells[2] = cells[2].substring( 1, cells[2].length()-2 );
// and now double quotes to single quotes
cells[2] = cells[2].replaceAll( """", """ );