从输入文件读取时出现新行,即使 \n 是定界的
New Line appearing when reading from input file, even though \n is Delimited
你好,我有这个代码:
Scanner input = new Scanner(new File("src/data/input.csv"));
input.useDelimiter(",|\n");
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
Input.csv 是:
-149.95038,61.13712,"McDonalds-Anchorage,AK","3828 W Dimond Blvd, Anchorage,AK, (907) 248-0597"
-149.93538,61.18167,"McDonalds-Anchorage,AK","4350 Spenard Rd, Anchorage,AK (907) 243-5122"
我的预期输出是:
-149.95038
61.13712
"McDonalds-Anchorage
AK"
"3828 W Dimond Blvd
Anchorage
AK
(907) 248-0597"
-149.93538
61.18167
相反,我得到:
-149.95038
61.13712
"McDonalds-Anchorage
AK"
"3828 W Dimond Blvd
Anchorage
AK
(907) 248-0597"
(blank line)
-149.93538
61.18167
我不确定为什么没有跳过新行。有没有更好的方法从输入文件中获取值?
这大概是一个Carriage Return/Line Feed issue。在 Windows(和其他一些系统)上,行分隔符是 \r\n
而不是 \n
.
替换
input.useDelimiter(",|\n");
和
input.useDelimiter(",|\n|\r|(\r\n)");
这将确保运输 Return (\r
) 被拾起。
但是,读取文件的最佳方式是使用 BufferedReader
而不是 Scanner
(以相同的方式初始化它)。然后,使用 readLine()
阅读您的行并使用 line.split(",")
以逗号分隔您的行。
尝试使用系统行分隔符
input.useDelimiter(System.getProperty("line.separator"));
你好,我有这个代码:
Scanner input = new Scanner(new File("src/data/input.csv"));
input.useDelimiter(",|\n");
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
Input.csv 是:
-149.95038,61.13712,"McDonalds-Anchorage,AK","3828 W Dimond Blvd, Anchorage,AK, (907) 248-0597"
-149.93538,61.18167,"McDonalds-Anchorage,AK","4350 Spenard Rd, Anchorage,AK (907) 243-5122"
我的预期输出是:
-149.95038
61.13712
"McDonalds-Anchorage
AK"
"3828 W Dimond Blvd
Anchorage
AK
(907) 248-0597"
-149.93538
61.18167
相反,我得到:
-149.95038
61.13712
"McDonalds-Anchorage
AK"
"3828 W Dimond Blvd
Anchorage
AK
(907) 248-0597"
(blank line)
-149.93538
61.18167
我不确定为什么没有跳过新行。有没有更好的方法从输入文件中获取值?
这大概是一个Carriage Return/Line Feed issue。在 Windows(和其他一些系统)上,行分隔符是 \r\n
而不是 \n
.
替换
input.useDelimiter(",|\n");
和
input.useDelimiter(",|\n|\r|(\r\n)");
这将确保运输 Return (\r
) 被拾起。
但是,读取文件的最佳方式是使用 BufferedReader
而不是 Scanner
(以相同的方式初始化它)。然后,使用 readLine()
阅读您的行并使用 line.split(",")
以逗号分隔您的行。
尝试使用系统行分隔符
input.useDelimiter(System.getProperty("line.separator"));