如何使用Java消除Excel中的文本分隔符



我的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( """", """ );

最新更新