gpt4 book ai didi

java - 如何在java中找到文件中的String并获取它旁边的String?

转载 作者:行者123 更新时间:2023-12-02 10:40:29 25 4
gpt4 key购买 nike

假设我有一个这样的文件:

Name: someone1 surname
Age: someNumber1
Height: whoCares1
Weight: someWeight1

Name: someone2
Age: someNumber2
Height: whoCares2
Weight: someWeight2

Name: someone3
Age: someNumber3
Height: whoCares3
Weight: someWeight3

我想获取 ArrayList<String> 中“Name:”旁边的所有字符串.

我只想使用Scanner为此类。

我尝试使用如下代码从文件中获取“Name:”部分:

while(scanner.hasNextLine()) {
//read line by line
String line = scanner.nextLine();

//code to search for a word in the file which
if(line.indexOf("Name:")!=-1) {
// will search line by line for this word ignoring numbers in addition
// I find the word with this, what next?
// I want to get word next to Name: and not only from one but from all the instances of the word Name:
}
else
System.out.println("does not");


}

我想获取“Name:”旁边的单词,不仅是从其中一个单词,而是从单词“Name:”的所有实例中获取单词。

我该怎么做?

编辑:

此外,如何分隔文件内的字符串,例如,如果我想将文件中第一人称的名称存储为 someone1在一个 ArrayList 和 surname 中在另一个ArrayList中。如何将它们分开,并将它们存储在新的 ArrayList 中。

最佳答案

您可以尝试使用String#matches来识别感兴趣的行:

List<String> names = new ArrayList<>();

while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.matches("^Name:.*")) {
names.add(line.replaceAll("^Name:\\s+", ""));
}
}

这里的想法是抓取所有以 Name: 开头的行,然后删除 Name: 前缀,留下您想要的内容。

所用正则表达式的说明:

^      from start of string (line)
Name: match text 'Name:'
\\s+ followed by any number of spaces (or other whitespace)

因此,通过删除 ^Name:\\s+,我们应该只留下其左侧的名称信息。

编辑:

例如,如果您的姓名内容实际上是名字和姓氏,那么每一行将如下所示:

Name: George Washington

在这种情况下,如果格式固定,我们可以尝试使用 String#split 来隔离名字和姓氏:

String[] parts = line.split("\\s+");
String first = parts[1];
String last = parts[2];
// then store first and last in separate lists

您要做什么完全取决于您的实际数据。这里有很多边缘情况。也许有些行只有一个名称,或者有些行有中间名、首字母、后缀等。这只是为了给您一个总体概念。

关于java - 如何在java中找到文件中的String并获取它旁边的String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52943636/

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