Разбор строк в UserInfo

Каков наилучший способ разбора строк, как показано ниже, в Java в данный пользовательский объект

"Adam Xin" "Canada/British Columbia/Vancouver" 2.110


   public class User {

    private String firstName;
    private String lastName;
    private String country;
    private String province;
    private String city;
    private Double rValue;
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Если вы можете добавить методы в класс User, добавьте статический метод разбирать, как показано ниже.

общедоступный статический анализ пользователя (текст строки) {

//Parsing Logic

}

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

Ниже представлена ​​реализация метода синтаксического анализа.

public static User parse(String text) {
    List<String> matchList = new ArrayList<String>();
    Pattern regex = Pattern.compile("[^\\s\"']+|\"([^\"]*)\"|'([^']*)'");
    Matcher regexMatcher = regex.matcher(text);
    while (regexMatcher.find()) {
        if (regexMatcher.group(1) != null) {
            matchList.add(regexMatcher.group(1));
        } else if (regexMatcher.group(2) != null) {
            matchList.add(regexMatcher.group(2));
        } else {
            matchList.add(regexMatcher.group());
        }
    }
    System.out.println(matchList);
    String[] name = matchList.get(0).split(" ");
    String[] address = matchList.get(1).split("/");
    return new User(name[0], name[1], address[0], address[1], address[2], Double.parseDouble(matchList.get(2)));
}

Теперь, когда вы хотите проанализировать строку и создать класс User, вызовите указанный выше метод.

  • Ваше здоровье!!

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

BrownTownCoder 15.04.2018 22:01

Вся первая строка, включая двойные кавычки, является строкой?

hosur narahari 15.04.2018 22:09

Да, это целая строка

BrownTownCoder 15.04.2018 22:18

@BrownTownCoder, вы должны принять ответ, если он вам помог

hosur narahari 17.04.2018 15:02

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