Дополнительные возвраты каретки при чтении CSV
У меня есть несколько CSV-файлов, которые я пытаюсь проанализировать с помощью Java. Сначала я извлекаю одну строку из файла 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 ответ
Приведенное ниже регулярное выражение будет соответствовать одному или нескольким символам перевода строки или возврата каретки,
"[\n\r]+"
Просто установите приведенное выше регулярное выражение в качестве разделителя. Это изменить это scanner.useDelimiter("[\n\r]");
линия к,
scanner.useDelimiter("[\n\r]+");