gpt4 book ai didi

java - 检测文件中的行尾

转载 作者:行者123 更新时间:2023-12-01 19:27:24 25 4
gpt4 key购买 nike

我正在尝试读取 txt 文件并显示文件元素。我想在同一行中显示元素以给出一个换行符。但是,当文件中的新行开始时,给出额外的新行。 txt 文件是:

Interstellar % Christopher Nolan % 2014 % PG-13

Inception % Christopher Nolan % 2010 % PG-13

Endgame % Russo Brothers % 2019 % PG-13

这里,% 是分隔符。到目前为止我所做的:

File file_path = new File("film.txt");
try {
Scanner file_input = new Scanner(file_path);
file_input.useDelimiter("%");
for(new_book=1; file_input.hasNext(); new_book++) {
String book_item = file_input.next().trim();
System.out.println(book_item);
if(new_book%4==0){
System.out.println();
}
}
file_input.close();
}
catch (FileNotFoundException e) {
System.out.println("File not found");
}

它提供了什么:

Interstellar 
Christopher Nolan
2014
PG-13
Inception

Christopher Nolan
2010
PG-13
Endgame
Russo Brothers

2019
PG-13

我想要的是:

Interstellar 
Christopher Nolan
2014
PG-13

Inception
Christopher Nolan
2010
PG-13

我注意到的是,在行尾索引不起作用,即,如果我打印 new_book 那么,new_book 值不会显示在第一个和第二个 PG-13,但显示在最后一个PG-13

我对文件中的这一行感到困惑。每一个建议都值得赞赏!另外,请注意,我不会与语法错误混淆。但是,有了逻辑以及文件读取过程是如何完成的。

最佳答案

问题是换行符不被视为分隔符,因此第四个标记被读取为 PG-13<NEWLINE>Inception - 里面嵌入了换行符。您的选择是:

添加换行符作为可能的分隔符:

Scanner file_input = new Scanner(file_path);
file_input.useDelimiter("%|\n");

或者在输入文件中每行的末尾添加 %:

Interstellar % Christopher Nolan % 2014 % PG-13 %
Inception % Christopher Nolan % 2010 % PG-13 %

或者将文件的读取方式更改为逐行读取并在 % 上分割(参见其他人的回答)

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

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