额外的回车在读取CSV时返回

时间:2014-07-25 10:56:15

标签: java regex csv carriage-return

我有一些我试图使用Java解析的CSV文件。我首先从CSV文件中提取一行,然后将其发送到另一个方法,以便使用以下代码进行处理:

for (String tempFile : filesToBeRead) {
        File csvFile = new File(tempFile);
        Scanner scanner =  new Scanner(csvFile);            
        scanner.useDelimiter("[\n\r]");
        scanner.next();         
        while(scanner.hasNext()) {
            String temp = scanner.next();
            System.out.println(temp);
//          dataStorage.enterRow(temp);

            }
        }

上述代码的输出是:

AI277|DEL|MUB|05-12-2013|0600|4.10|5500|Y|EB

AI279|DEL|MUB|10-12-2013|0630|4.30|4900|Y|E

AI289|DEL|MUB|10-12-2013|0830|4.00|5650|Y|EB

AI278|DEL|MUB|17-12-2013|1830|4.20|5300|Y|E

AI278|DEL|MUB|20-12-2013|1430|3.45|6500|N|EB

输出应该在哪里:

AI277|DEL|MUB|05-12-2013|0600|4.10|5500|Y|EB    
AI279|DEL|MUB|10-12-2013|0630|4.30|4900|Y|E    
AI289|DEL|MUB|10-12-2013|0830|4.00|5650|Y|EB    
AI278|DEL|MUB|17-12-2013|1830|4.20|5300|Y|E
AI278|DEL|MUB|20-12-2013|1430|3.45|6500|N|EB

究竟发生了什么,即使正则表达式设置得当,这个额外的回车(\ r)来自何处?

1 个答案:

答案 0 :(得分:2)

以下正则表达式将匹配一个或多个换行符或回车符,

"[\n\r]+"

将上面的正则表达式设置为分隔符。这是将此scanner.useDelimiter("[\n\r]");行更改为

scanner.useDelimiter("[\n\r]+");