您好,我有这段代码:
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戴蒙德大道
锚地
阿克
(907)248-0597“
-149.93538
61.18167
相反,我得到:
-149.95038
61.13712
“麦当劳安克雷奇
AK”
“3828 W戴蒙德大道
锚地
阿克
(907)248-0597“
(空行)
-149.93538
61.18167
我不确定为什么不跳过新行。是否有更好的方法从输入文件中获取值?
最佳答案
这可能是Carriage Return/Line Feed issue。在Windows(和其他一些系统)上,行定界符是\r\n
而不是\n
。
更换
input.useDelimiter(",|\\n");
与
input.useDelimiter(",|\\n|\\r|(\\r\\n)");
这将确保选择回车(
\r
)。但是,读取文件的最佳方法是使用
BufferedReader
而不是Scanner
(以相同的方式对其进行初始化)。然后,使用readLine()
读取行,并使用 line.split(",")
以逗号分隔行。