Запутывая CSV - PullRequest
       16

Запутывая CSV

0 голосов
/ 14 февраля 2012

Можно ли сделать CSV-ридер похожим на этот

while((line = reader.readLine()) != null){
            String[] values = line.split(",");
            for(String s : values) {
                data.add(s);
}

, но вместо запятой иметь разные разбиения для каждой строки, например:

value/value;value=value

вместо простозначение, значение, значение, значение

Ответы [ 4 ]

2 голосов
/ 14 февраля 2012

String#split принимает регулярное выражение, а не просто строку, в качестве аргумента, поэтому вы можете использовать выражение типа ;|/|=|, для разбиения.

1 голос
/ 14 февраля 2012

Метод разделения String также можно вызывать с помощью регулярного выражения .В вашем случае фиксированная строка кода будет:

String[] values = line.split("[,/;=]"); // specific chars you want to look for

или

String[] values = line.split("[^0-9]"); // everything except digits
1 голос
/ 14 февраля 2012

Split принимает регулярное выражение в качестве аргумента String. Например, это разделит любой из символов, которые вы использовали в вашем примере.

line.split("[/;=]")

1 голос
/ 14 февраля 2012

Конечно, вы можете реализовать ридер для вашего обфусцированного csv , но формат файла больше не CSV, и у вас будет больше проблем с определением набора символов-разделителей (они не должны быть частьюзначения).

Самый простой подход: написать кодировщик, который преобразует допустимый CSV в ваш собственный формат данных и декодер преобразования обратно в допустимый CSV.

Кстати - вы все еще можете декодировать с помощью одной команды разделения:

String[] values = line.split("[/;=]");

split принимает в качестве аргумента регулярное выражение.

...