Как я могу использовать REGEX для разбора запятых, а также перевода строки - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть этот CSV-файл, который отформатирован таким образом, что после определенного значения есть новая строка. Выглядит это так:

Value1, Value2, Value3, Value4 (/ n) "Value5", "Value 6", "Value 7"

Как видите, между value4 и value5 нет разделителя запятых. Я пытался проверить, создаст ли array.split(\n) массив строк, который ограничивает новую строку, однако в конечном итоге он выглядит следующим образом:

Value1, Value2, Value3, Value4"Value5", "Value6", "Value7".

У меня есть блок case, который определяетТип разделителя и выполняет разделение для этого символа:

String[] recordValues;

        switch (fileType) {
            case "COMMA_DELIMITED":
                recordValues = record.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

Я бы хотел, чтобы конечный результат выглядел из: Value1, Value2, Value3, Value4"Value5", "Value6", "Value7"

Для этого: Value1, Value2, Value3, Value4, "Value5", "Value6", "Value7"

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

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Предполагая, что вы имеете в виду '\ n' (ваш пример - / n), этот будет работать для вас:

String test = "Value1, Value2, Value3, Value4\n \"Value5\", \"Value 6\", \"Value 7\"";
String[] values = test.split(",|\n");
System.out.println(java.util.Arrays.deepToString(values));
0 голосов
/ 07 ноября 2019

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

Ваше регулярное выражение может выглядеть следующим образом:

array.split("\n|,");
...