/ / Escaping ',' separador durante a divisão usando String.split () - java, regex, csv

Escapando ',' separador ao dividir usando String.split () - java, regex, csv

Estou tentando ler um arquivo e, portanto, estou dividindo os campos quando recebo "," separador de vírgula. No entanto, alguns campos têm "," neles, mas eles são colocados entre aspas duplas, portanto, como posso dividi-lo, escapando do , separador. Aqui está o que eu fiz

String[] cols = line.split(Pattern.quote(","));

Como devo modificar isso usando split() somente em Java. Também que alterações terei que fazer, caso o separador seja um cano "|"?

Respostas:

5 para resposta № 1

Eu respondi uma pergunta semelhante Aqui. A primeira expressão, modificada para sua tarefa, seria lida

,(?=([^"]*"[^"]*")*[^"]*$)

Essa expressão identifica uma vírgula sem aspas, garantindo que um número par de aspas a siga.


3 para resposta № 2

Eu não tentaria usar um regex para isso. Expressões regulares simplesmente não são uma boa combinação para isso - embora possa ser possível criar um regex, seria horrível ler.

Existem muitos analisadores de código aberto de CSV. Apenas um pesquisa rápida encontrei muitos projetos - eu os examinaria antes de escrever o seu.


0 para resposta № 3
    String  line="one|two,three";
String cols[]= line.split("[,|\|]");

Algo como o acima seria dividido com base e |

Para meta-caractere | você teria que delimitar com eu concordo com os outros; é melhor usar analisadores de CSV por aí do que reinventá-lo novamente.