gpt4 book ai didi

java - 从文本文件中检测数组

转载 作者:行者123 更新时间:2023-11-30 02:50:28 33 4
gpt4 key购买 nike

我有一些包含文本的文件,我必须从中提取一些信息,其中我有一个二维 double 组(有时它可能会丢失 - 因此你会找到“if”子句)。

这是文件的格式:

Name=fileName

groups={ group1=groupName group2=groupName minAge= maxAge= ages=[[18.0,21.0,14.7],[17.3,13.0,12.0]] }

我正在使用 java.nio.file.Files、java.nio.file.Path 和 java.io.Bufferedreader 来读取这些文件,但在尝试将表示数组的字符串转换为真正的 java 数组时遇到问题:

    Path p = Paths.get(filename);
try(BufferedReader br = Files.newBufferedReader(p)) {
String line = br.readLine();
String fileName = line.split("=")[1];

line = br.readLine();

String[] arr = line.split("=");
String group1 = arr[2].split(" ")[0];

String group2 = arr[3].split(" ")[0];

Integer minAge = Integer.parseInt(arr[4].split(" ")[0]);
Integer maxAge = Integer.parseInt(arr[5].split(" ")[0]);

double[][] ag = null;
if (line.contains("ages")) {
String age = arr[6].trim().replace("}", "").replace("[[", "").replace("]]", "").trim();
String[] arrAge = weights.split(",");
//don't know what to do here from now on, since the number of arrays inside
//the first one may vary from 1 to 2 (e.g I might find: [[3.0, 4.0]] or [[3.0, 7.0],[4.0,5.0]])
//this is what I was trying to do
ag = new double[1][arrAge.length];
for (int i = 0; i < arrAge.length; i++)
ag[0][i] = Double.parseDouble(arrAge[i]);
}
}
catch (Exception e) {
e.printStackTrace();
}

有没有办法从文本中检测数组,而不需要执行我在代码中尝试执行的操作,或者有没有办法通过读取以这种方式格式化的文件来提取正确的二维数组?

还有一个问题:有没有办法打印这样的二维数组?如果是,怎么办? (通过使用 Arrays.toString 我只得到这样的东西:[[D@69222c14])

最佳答案

您可以使用正则表达式从任何字符串中提取二维数组。

String groups="{ group1=groupName group2=groupName minAge= maxAge= ages=[[18.0,21.0,14.7],[17.3,13.0,12.0]] }";
String pattern = "(\\[\\[.+\\]\\])";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(groups);
if (m.find( ))
System.out.println(m.group());

上述代码的输出是:

[[18.0,21.0,14.7],[17.3,13.0,12.0]]

关于java - 从文本文件中检测数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38827824/

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