gpt4 book ai didi

java - 在 Java 中分割行并填充数组并跳过空白值

转载 作者:太空宇宙 更新时间:2023-11-04 15:17:16 25 4
gpt4 key购买 nike

我有一个线数组,有点像下面

示例如下:

A-NUMBER                      ROUTINF   ACO   AO    L    MISCELL

0-0 0 1-20
0-00
0-01 FDS 3-20
0-02 6 7 3-20
0-03 4 3-20
1-0 F=PRE
ANT=3
NAPI=1
1-1 F=PRE
ANT=3

我需要根据列解析该行,跳过具有空白值的列并创建一个新行,如下所示

ANUM = 0-0, ACO=0, L=1-20;
ANUM = 0-00;
ANUM = 0-01, ROUTINF=FDS, L=3-20;
ANUM = 0-02, ACO=6, AO=7, L=3-20;
ANUM = 0-03, AO=4,L=3-20;
ANUM = 1-0, F=PRE, ANT=3, NAPI=1;
ANUM = 1-1, F=PRE, ANT=3;

我可以分割该行,但我的代码不记得该值属于哪一列以及何时跳过这些值。

String[] splitted = null;
for (Integer i = 0; i < lines.size(); i++) {
splitted = lines.get(i).split("\\s+");
for(String str : splitted)
if(!(splitted.length == 1)){
anum = splitted[0];
routinf = splitted[1];
aco = splitted[2];
ao = splitted[3];
l = splitted[4];
}else {
miscell = splitted[0];
}
}

最佳答案

文件中的列似乎具有固定长度(我没有看到任何其他方法来区分每列)。如果是这种情况,那么我建议使用 substring(srat, end) 而不是 split

创建一个类来保存一条记录。

class Record {
String aNumber,
List<String> routingf, aco, ao, l, miscell;

public Record(String aNumber) {
this.aNumber = aNumber;
this.routingf = new ArrayList<>();
// init other lists like above ...
}

public void addRoutingf(String routingf) {
// add only of not null and is not empty trimmed
if(routingf != null && routiingf.trim().length() > 0) {
this.routingf.add(routiingf);
}
}

// implement add-methods for other lists like above ...
}

在解析每一行时记住最后创建的记录。如果在实际行中 A-NUMBER 为空,则使用最后创建的记录来存储值,否则创建一条新记录并将其记住为最后/实际,以便您可以将其用于接下来的行,如果必要的。

将所有记录保存在列表中

List<Record> records = new ArrayList<>();

关于java - 在 Java 中分割行并填充数组并跳过空白值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773285/

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