如何使用 java 消除 excel 中的文本分隔符
how to eliminate text delimiter in excel using java
我的 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( "\"\"", "\"" );
我不确定尾随 }"|"
- 为什么它不在第一个数据样本中?当然,您可以使用 substring 简单地丢弃最后 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( "\"\"", "\"" );
我的 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( "\"\"", "\"" );
我不确定尾随 }"|"
- 为什么它不在第一个数据样本中?当然,您可以使用 substring 简单地丢弃最后 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( "\"\"", "\"" );