2012-02-02 5 views
3

Мне удалось разбить CSV-файл на основе запятых. Я сделал это, поместив фиктивную строку, где когда-либо был «,», а затем разделился на основе фиктивной строки.Java - разделение CSV-файла на массив

Однако файл CSV содержит такие вещи, как:

something, something, something 
something, something, something 

Поэтому, где есть новая линия, последние и первые значения каждой строки сливаются в свою собственную строку. Как я могу это решить? Я попытался разместить свою фиктивную строку, где найдено \n, чтобы разбить ее на основе этого, но безуспешно.

Помогите ?!

+0

Почему вы не разделенное непосредственно с помощью запятых? Во всяком случае, опубликуйте http://sscce.org/, чтобы получить лучшую помощь. – jalopaba

ответ

5

Я настоятельно рекомендую вам не изобретать колесо :). Переход с одной из уже имеющихся библиотек для обработки CSV файлов, например: OpenCSV

4

Я не понимаю, зачем нужна фиктивная строка. Почему бы не разделить на запятую?

BufferedReader in = new BufferedReader(new FileReader("file.csv")); 
String line; 
while ((line = in.readLine()) != null) { 
    String[] fields = line.split(","); 
} 
+0

Это не помогает мне разбить по линиям. Это был вопрос. – mino

+2

вы должны читать каждую строку и разделять каждую по отдельности. Тогда у вас не возникнет проблема слияния линий. – dogbane

-1

использовать followin он разделит строку

   String[] a=scanner.next().split(" "); 
1

В соответствии с фиктивными строками, которые вы упомянули, он может быть легко обработан с помощью существующей библиотеки. Я хотел бы рекомендовать библиотеку с открытым исходным кодом uniVocity-parsers, которая обеспечивает простой API, значительную производительность и гибкость.

Просто смотрите несколько строк кода для считывания данных CSV в память с массивом:

private static void parseCSV() throws FileNotFoundException { 
    CsvParser parser = new CsvParser(new CsvParserSettings()); 
    List<String[]> parsedData = parser.parseAll(new FileReader("/examples/example.csv")); 

    for (String[] row : parsedData) { 
     StringBuilder strBuilder = new StringBuilder(); 
     for (String col : row) { 
      strBuilder.append(col).append("\t"); 
     } 
     System.out.println(strBuilder); 
    } 
} 
Смежные вопросы