检测文件中的行尾
Detect the end of line in file
我正在尝试读取 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
.
我对文件中的这一行感到困惑。每一个建议表示赞赏!另外,请注意,我不会混淆语法错误。但是,有了逻辑以及文件读取过程是如何完成的。
你可以尝试读行再拆分
file_input = new Scanner(file);
while(file_input.hasNextLine()){
String st = file_input.nextLine();
String[] s = st.split("%");
if(s.length > 1)
System.out.println(s[0] + "\n" + s[1] + "\n" + s[2] + "\n" + s[3] + "\n");
}
file_input.close();
我使用 scanner.nextLine() 函数一次读取整行。然后我用 String.split("%") 将行字符串拆分为一个字符串列表。最后,我在输出之前对每个字符串使用 String.trim() 以删除前导和尾随空格。
File file_path = new File("film.txt");
try {
Scanner file_input = new Scanner(file_path);
while(file_input.hasNextLine()){
String line = file_input.nextLine();
String[] items = line.split("%");
for(String item: items)
System.out.println(item.trim());
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
问题是换行符不被视为定界符,因此第 4 个标记被读取为 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 %
或者将文件读取方式更改为逐行读取并在 %
上拆分(请参阅其他人的答案)
我正在尝试读取 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
.
我对文件中的这一行感到困惑。每一个建议表示赞赏!另外,请注意,我不会混淆语法错误。但是,有了逻辑以及文件读取过程是如何完成的。
你可以尝试读行再拆分
file_input = new Scanner(file);
while(file_input.hasNextLine()){
String st = file_input.nextLine();
String[] s = st.split("%");
if(s.length > 1)
System.out.println(s[0] + "\n" + s[1] + "\n" + s[2] + "\n" + s[3] + "\n");
}
file_input.close();
我使用 scanner.nextLine() 函数一次读取整行。然后我用 String.split("%") 将行字符串拆分为一个字符串列表。最后,我在输出之前对每个字符串使用 String.trim() 以删除前导和尾随空格。
File file_path = new File("film.txt");
try {
Scanner file_input = new Scanner(file_path);
while(file_input.hasNextLine()){
String line = file_input.nextLine();
String[] items = line.split("%");
for(String item: items)
System.out.println(item.trim());
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
问题是换行符不被视为定界符,因此第 4 个标记被读取为 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 %
或者将文件读取方式更改为逐行读取并在 %
上拆分(请参阅其他人的答案)