gpt4 book ai didi

java - 关于Java Split命令CSV文件解析

转载 作者:行者123 更新时间:2023-12-01 07:42:28 27 4
gpt4 key购买 nike

我有一个以下格式的 csv 文件。如果程序读取以下任一 csv 数据,我会遇到问题

"D",abc"def,"","0429"292"0","11","IJ80","Feb10_1.txt-2","文件记录","05/02/2010","04/03/2010","","1","-91","",""

<小时/>

"D","abc"def","","04292920","11","IJ80","Feb10_1.txt-2","文件记录","05/02/2010","2010 年 4 月 3 日","","1","-91","",""

下面的 split 命令用于忽略双引号内的逗号,我从之前的帖子中得到了下面的 split 命令。粘贴我执行此命令的 URL

String items[] = line.split(",(?=([^\"]\"[^\"]\")[^\"]$)",15);System.out.println("items.length"+items.length);

Regarding Java Split Command Parsing Csv File

items.length 打印为 14 而不是 15。 abc"def 未被识别为单独的字段,并且被错误地存储为"D",abc"def in items[0]..我希望它以下面的方式存储

items[0] 应该是“D”,items[1] 应该是 abc"def

当存在值“abc”def”时会发生同样的问题。我希望将其存储为

items[0] 应为“D”,items[1] 应为“abc”def”

如果双引号内重复出现双引号(字段值为 D,"abc""def",1 ),则此分割命令也可以完美工作。

如何解决这个问题。

最佳答案

我认为您最好编写一个解析器来解析 CSV 文件,而不是尝试使用正则表达式。一旦您开始处理行内包含回车符的 CSV 文件,那么正则表达式可能会崩溃。编写一个简单的 while 循环来遍历所有字符并分割数据并不需要那么多代码。当您使用解析器而不是正则表达式时,处理“非标准”* CSV 文件(例如您的文件)会容易得多。

*我说非标准是因为 CSV 并没有真正的官方标准,当你处理来自许多不同系统的 CSV 文件时,你会看到很多奇怪的东西,比如 abc"def 字段,如图所示如上所述。

关于java - 关于Java Split命令CSV文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2277476/

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