gpt4 book ai didi

java - 由于数据有空字段,如何获取相等长度的数组

转载 作者:行者123 更新时间:2023-12-02 09:53:06 25 4
gpt4 key购买 nike

我有一个 .dat 文件,其格式如下:

Dy MxT   MnT   AvT   HDDay  AvDP
1 88 59 74 53.8
3 77 55 66 39.6
9 86 32* 59 6 61.5
3 77 55 66 39.6

我为每一行创建了一个字符串列表,如下所示:

1  88    59    74          53.8

用空格分割字符串后,我得到不同长度的数组,因为字段“HDDay”并不总是有值。例如 split("+") 第 nr 行之后的结果。 1 是:

array[0] //1
array[1] //8
array[2] //59
array[3] //74
array[4] //53.8

但我想要:

array[0] //1
array[1] //8
array[2] //59
array[3] //74
array[4] //"" ==> empty value
array[5] //53.8

这就是我尝试做的:

    Charset charset = Charset.forName("ISO-8859-1");
//get list of String
List<String> result = Files.readAllLines(Paths.get(path), charset);

for(int i = 1; i < result.size(); i++){
//Exclude empty line
if(!result.get(i).isEmpty()){
//splitting each line by space
String[] values = result.get(i).split("\\s+");
for(int k = 0; i < values.length; k++){
System.out.println(values[k]);
}
}
}

我需要它,因为我想创建一个 java 对象来解析 json 并将其返回给客户端。

最佳答案

您可以尝试一些方法。第一个选项:由于它是 .dat 文件并且看起来主要是结构性的,因此您可以使用竖线 (|) 或 (,) 分隔,就像任何 csv 文件一样。

第二个选项:如果您可以控制之间的空格数量,则可以在正则表达式代码中添加限制并按限制进行拆分。

例如:

String s = "1  88    59    74          53.8";
String[] stringArray = s.split("\\s{2,5}");

如果你看到这里,我已经指定 2 为空格的最小字符,5 为空格的最大字符。如果它在 5 个字符之后找到空格,它应该会为您提供所需的输出。

关于java - 由于数据有空字段,如何获取相等长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56173880/

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