Java извлекает строку из строки

Я анализирую файл csv с помощью Apache Commons CSVRecord и CSVFormat в Java. Я получил следующую запись в формате String Записи: CSVRecord [comment=null, mapping = {Id=0, FirstName=1, LastName=2}, номер_записи=1, значения=[1, Джон, Уэйн]]

Мне нужно извлечь значения только для примера: 1, Джон, Уэйн

Использовал следующие варианты, чтобы получить результат.

String[] split = record.split("values=\\[");
String result = split[1].substring(0, split[1].length() - 2);

Мой вопрос: есть ли лучший вариант (быстрее), чем этот в Java?

Не могли бы вы вставить пример входного CSV-файла?

pandaadb 29.05.2019 17:31

Вы пытаетесь разобрать значение CSVRecord.toString()? Что именно вы делаете?

Karol Dowbecki 29.05.2019 17:31

Что сказал Кароль. Используйте один из методов CSVRecord.get() или CSVRecord.iterator() или CSVRecord.toMap() для доступа к значениям

Aaron 29.05.2019 17:33

да. Я пытаюсь разобрать значение CSVRecord.toString().

MChiru 29.05.2019 17:33

возможно, вы можете использовать метод toMap() на своем CSVRecord, тогда у вас будет Map<String,String>, и вы получите прямой доступ к своим FirstName и LastName

nader.h 29.05.2019 17:33

Какой вариант лучше из двух: 1. Построить строку путем добавления (методы CSVRecord.get для каждой записи) 2. Вариант, который я пробовал в вопросе

MChiru 29.05.2019 17:36

Попытка выполнить синтаксический анализ строкового представления имеет подводные камни в дополнение к меньшей производительности. Например, решение @Guilherme потерпит неудачу, если одно из значений содержит values=[ или , (первое маловероятно, второе может быть меньше)

Aaron 29.05.2019 17:57

Вариант 1. Создайте строку путем добавления (методы CSVRecord.get для каждой записи) - не будет ли он менее эффективен, чем этот вариант?

MChiru 30.05.2019 09:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
178
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это:

String txt = "CSVRecord [comment=null, mapping = {Id=0, FirstName=1, LastName=2}, recordNumber=1, values=[1, John, Wayne]]";

String[] sub = txt.substring(txt.indexOf("values=[")).split("[\\[\\]]");


System.out.println(sub[1]);

Другие вопросы по теме