如何使用java消除excel中的文本分隔符

如何使用java消除excel中的文本分隔符,java,json,csv,apache-poi,string-split,Java,Json,Csv,Apache Poi,String Split,我的csv文件包含管道分隔符,数据在csv中如下所示 ID| Name| details 1| xx| { "user":"xx", "email":"xxx@xxx.in" } 如果我在记事本中编辑csv,则该值显示为 1|xx|"{ ""user"":""z"", ""email"":""e"" }"|" 在我的程序中,我根据管道分隔符拆分值。问题是,当我从csv获取详细信息的值时,每

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

是..问题是,当我在while循环中检查结束“}”时,返回空指针异常,因为该值添加了额外的分隔符(“)。因此,while循环在到达“}”后不会结束。如何在looo中跳过额外的分隔符?现在有意义吗?全部:读取行,在连接部分行时检测组的结尾,拆分组合行(根据“|”),删除(在第三个单元格中)外部引号,然后将所有双引号转换为单引号。非常感谢您的快速解决方案。我现在就试试看它是否管用:)我还对regex做了很多修改,以替换用于解析JsonGood的特殊字符。另一个关闭;-)我的程序将根据ID从csv文件中获取值,其中一列将具有json值。如果我在我的程序中做更复杂的事情,有没有其他简单的方法?提前谢谢你,我只是想知道断线的事。但是,如果在Excel文件中无法避免这些问题,您必须在这里处理它们。为什么您要尝试编写自己的CSV阅读器?有许多优秀的CSV库,请使用其中一个!嗨,加格拉瓦。。我尝试了opencsv和其他库。当我在csv数据中使用json时,我面临着这个问题。有没有办法处理json?请给出一个示例程序,这将对我有所帮助