Экранирование разделителя ',' при разделении с использованием String.split () - PullRequest
2 голосов
/ 11 ноября 2011

Я пытаюсь прочитать файл и, следовательно, я разделяю поля, когда получаю ',' разделитель запятых. Тем не менее, в некоторых полях есть ',', но они заключены в двойные кавычки, поэтому, как я могу разделить их, избегая разделителя ,. Вот что я сделал

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

Как мне изменить это, используя split() только в Java. Кроме того, какие изменения я должен сделать, если разделитель представляет собой трубу '|'?

Ответы [ 3 ]

5 голосов
/ 11 ноября 2011

Я ответил на аналогичный вопрос здесь . Первое выражение, измененное для вашей задачи, будет иметь вид

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

Это выражение идентифицирует запятую без кавычек, следя за тем, чтобы за ней следовало четное число кавычек.

3 голосов
/ 11 ноября 2011

Я бы не стал использовать для этого регулярное выражение.Регулярные выражения просто не подходят для этого - хотя может быть возможно создать такое регулярное выражение, было бы ужасно читать.

Существует множество парсеров CSV с открытым исходным кодом.Просто быстрый поиск нашел много проектов - я бы просмотрел те, прежде чем писать свой собственный.

0 голосов
/ 11 ноября 2011
    String  line="one|two,three";
    String cols[]= line.split("[,|\\|]");

Нечто подобное, описанное выше, будет разделено на основе, и |

Для метасимвола |вам придется разделять с \ я согласен с другими;лучше использовать CSV-парсеры, а не изобретать их снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...