gpt4 book ai didi

java - 在java中读取和拆分(解析)数据

转载 作者:搜寻专家 更新时间:2023-11-01 02:02:12 25 4
gpt4 key购买 nike

我正在尝试从 .txt 文件中拆分一些简单的数据。我在互联网上找到了一些有用的结构,但不足以按照我想要的方式拆分数据。我得到这样的字符串:

{X:0.8940594 Y:0.6853521 Z:1.470214} 

我想把它改成这样;

0.8940594
0.6853521
1.470214

然后将它们按照X=[], Y=[], Z=[]的顺序放到一个矩阵中; (数据为物体的坐标)

这是我的代码:

BufferedReader in = null; {
try {
in = new BufferedReader(new FileReader("file.txt"));
String read = null;
while ((read = in.readLine()) != null) {
String[] splited = read.split("\\s+");
for (String part : splited) {
System.out.println(part);
}
}
} catch (IOException e) {
System.out.println("There was a problem: " + e);
e.printStackTrace();
} finally {
try {
in.close();
} catch (Exception e) {
}
}
}

我需要在我的代码中添加什么才能以我想要的方式获取数据?

现在使用这段代码我收到这样的数据:

{X:0.8940594
Y:0.6853521
Z:1.470214}

最佳答案

您可以尝试使用类似于以下的正则表达式来匹配和捕获每个元组中包含的三个数字:

{\s*X:(.*?)\s+Y:(.*?)\s+Z:(.*?)\s*}

括号中包含的每个数量都是一个捕获组,并且在匹配发生后可用。

int size = 100;  // replace with actual size of your vectors/matrix
double[] A = new double[size];
double[] B = new double[size];
double[] C = new double[size];
String input = "{X:0.8940594 Y:0.6853521 Z:1.470214}";
String regex = "\\{\\s*X:(.*?)\\s+Y:(.*?)\\s+Z:(.*?)\\s*\\}";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
int counter = 0;
while (m.find()) {
A[counter] = Double.parseDouble(m.group(1));
B[counter] = Double.parseDouble(m.group(2));
C[counter] = Double.parseDouble(m.group(3));
++counter;
}

关于java - 在java中读取和拆分(解析)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089115/

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