如何在java中的文件中找到一个字符串并在它旁边获取字符串?

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


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>.


我只想为此使用Scanner类。


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


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");



        }

我想在“名称:”旁边得到一个词,不仅来自一个词,而且来自“名称:”这个词的所有实例。


我怎样才能做到这一点?


编辑:


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


慕的地6264312
浏览 153回答 2
2回答

www说

您可以尝试使用String#matches来识别感兴趣的线:List<String> names = new ArrayList<>();while (scanner.hasNextLine()) {&nbsp; &nbsp; String line = scanner.nextLine();&nbsp; &nbsp; if (line.matches("^Name:.*")) {&nbsp; &nbsp; &nbsp; &nbsp; names.add(line.replaceAll("^Name:\\s+", ""));&nbsp; &nbsp; }}这里的想法是获取所有以 开头的行Name:,然后删除Name:前缀,留下您想要的内容。使用的正则表达式说明:^&nbsp; &nbsp; &nbsp; from start of string (line)Name:&nbsp; match text 'Name:'\\s+&nbsp; &nbsp;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你会做什么完全取决于你的实际数据。这里有很多边缘情况。也许有些行只有一个名字,或者有些行有中间名、首字母、后缀等。这只是为了给你一个大概的概念。

繁华开满天机

以下是从提供的文件中提取名称列表的功能方法:public&nbsp;List<String>&nbsp;getNames(File&nbsp;file)&nbsp;throws&nbsp;IOException&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Files.lines(file.toPath()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(str&nbsp;->&nbsp;str.contains("Name:&nbsp;")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(str&nbsp;->&nbsp;str.split("Name:&nbsp;")[1]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toList());}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java