gpt4 book ai didi

java - 如何转义csv文件中String[]数组中的逗号?

转载 作者:行者123 更新时间:2023-12-02 11:16:21 30 4
gpt4 key购买 nike

我正在使用 apache commons.csv.CSVparser。例如,我想在 csv 记录中使用字符串数组:

"\"[\"54bb051e-3d12-11e5-91cd-b8f6b11b7feb\",\"472a9748-3d12-11e5-91cd-b8f6b11b7feb\"]\",Hallo,114058,Leon,31,\"     \",8400,bar,FOO";
CSVParser csvParser = CSVFormat.DEFAULT
.withDelimiter(CSV_SEPARATOR).withQuote(null)
.withFirstRecordAsHeader()
.parse(new StringReader(line));

如何转义String[]数组中的逗号?读取记录后,字符串将被拆分为 java 数组。

我尝试过这个:

@Test
public void processLine() throws Exception {
String line = "Ids,Info.name,Info.number,address.street,address.number,address.bus,address.postalcode,address.city," +
"address.country\n" +
"\"[\"\"54bb051e-3d12-11e5-91cd-b8f6b11b7feb\"\",\"\"472a9748-3d12-11e5-91cd-b8f6b11b7feb\"\"]\",Hallo,114058,Leon,31,\" \",8400,foo,BAR";
CSVParser csvParser = CSVFormat.DEFAULT
.withDelimiter(CSV_SEPARATOR).withQuote(null)
.withFirstRecordAsHeader()
.parse(new StringReader(line));

String[] 的逗号仍然被视为分隔符。

最佳答案

您需要正确转义 CSV 内容。试试这个:"\"[\"\"54bb051e-3d12-11e5-91cd-b8f6b11b7feb\"\",\"\"472a9748-3d12-11e5-91cd-b8f6b11b7feb\"\"]\",你好,114058,莱昂,31,\"\",8400,酒吧,FOO"

由于混合了 Java 和 CSV,转义变得困惑。在 java 中,您需要使用 \" 来转义双引号,在 CSV 上,您需要使用双双引号来转义它。最后您需要一个 \"\" 获取字符串上的输出 ""。最终字符串如下所示:"[""54bb051e-3d12-11e5-91cd-b8f6b11b7feb"",""472a9748-3d12-11e5 -91cd-b8f6b11b7feb""]",Hallo,114058,Leon,31,"",8400,bar,FOO。作为 CSV 上的第一个值:["54bb051e-3d12-11e5-91cd -b8f6b11b7feb","472a9748-3d12-11e5-91cd-b8f6b11b7feb"]

此外,您的字符串不包含 header ,因此您需要注意 withFirstRecordAsHeader()

这个:

CSVParser csvParser = CSVFormat.DEFAULT.withDelimiter(',').withQuote('"').parse(new StringReader(
"\"[\"\"54bb051e-3d12-11e5-91cd-b8f6b11b7feb\"\",\"\"472a9748-3d12-11e5-91cd-b8f6b11b7feb\"\"]\",Hallo,114058,Leon,31,\" \",8400,bar,FOO"));
System.out.println(csvParser.getRecords().get(0).get(0));

将输出以下字符串:

["54bb051e-3d12-11e5-91cd-b8f6b11b7feb","472a9748-3d12-11e5-91cd-b8f6b11b7feb"]

这个字符串可以被解析成一个String[]。

关于java - 如何转义csv文件中String[]数组中的逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50250240/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com