您好,我有这段代码:
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
“麦当劳-安克雷奇
AK“
“3828 W Dimond Blvd
安克雷奇
AK
(907)248-0597“
-149.93538
61.18167
相反,我得到了:
-149.95038
61.13712
“麦当劳-安克雷奇
AK“
“3828 W Dimond Blvd
安克雷奇
AK
(907)248-0597“
(空行)
-149.93538
61.18167
我不确定为什么不会跳过新线。有没有更好的方法从输入文件中获取值?
答案 0 :(得分:4)
这可能是Carriage Return/Line Feed issue。在Windows(以及其他一些系统)上,行分隔符为\r\n
而不是\n
。
替换
input.useDelimiter(",|\\n");
与
input.useDelimiter(",|\\n|\\r|(\\r\\n)");
这将确保选择回车(\r
)。
但是,阅读文件的最佳方法是使用BufferedReader
而不是Scanner
(以相同方式初始化它)。然后,使用readLine()
阅读您的行,line.split(",")
以逗号分隔您的行。
答案 1 :(得分:0)
尝试使用系统行分隔符
input.useDelimiter(System.getProperty("line.separator"));