gpt4 book ai didi

java - 如何用Java从文本文件中读取格式化数据

转载 作者:行者123 更新时间:2023-12-02 01:52:38 24 4
gpt4 key购买 nike

所以在过去的一周里,我完成了这项作业,而我在这项作业中要做的事情之一就是从文本文件中读取格式化数据。通过格式化我的意思是这样的:

{
Marsha 1234 Florida 1268
Jane 1523 Texas 4456
Mark 7253 Georgia 1234
}

(注意:这只是一个示例。不是我作业中的实际数据。)

现在我一直在尝试自己解决这个问题。我尝试将每一行作为字符串读取,并使用 .substring() 获取所述字符串的某些部分并将其放入数组中,然后从数组中获取该字符串的索引并打印它到屏幕上。现在我已经尝试了这个想法的几种不同变体,但它不起作用。它要么以错误结束,要么以奇怪的方式输出数据。现在作业明天就要交了,我不知道该怎么办。如果有人可以就此事向我提供一些帮助,我将不胜感激。

最佳答案

对于您给出的示例,使用正则表达式模式 \s+ 分割行会起作用:

String s = "Marsha      1234     Florida   1268";
s.split("\\s+");

生成一个包含 4 个元素“Marsha”、“1234”、“Florida”和“1268”的数组。

我使用的模式匹配一​​个或多个空白字符 - 请参阅 The JavaDocs of Pattern了解详细信息和其他选项。

<小时/>

另一种方法是定义您的线路作为一个整体需要匹配的模式,并捕获您感兴趣的组:

String s = "Marsha      1234     Florida   1268";

Pattern pattern = Pattern.compile("(\\w+)\\s+(\\d+)\\s+(\\w+)\\s+(\\d+)");
Matcher matcher = pattern.matcher(s);

if (!matcher.matches())
throw new IllegalArgumentException("line does not match the expected pattern"); //or do whatever else is appropriate for your use case

String name = matcher.group(1);
String id = matcher.group(2);
String state = matcher.group(3);
String whatever = matcher.group(4);

此模式要求第二组和第四组仅包含数字。

但请注意,如果您的数据也可以包含空格,这两种方法都会失败 - 在这种情况下您需要不同的模式。

关于java - 如何用Java从文本文件中读取格式化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755983/

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