Java 将行解析为UserInfo

Java 将行解析为UserInfo,java,Java,在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

在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;
}

若您可以将方法添加到用户类,那个么添加一个静态方法解析,如下所示

公共静态用户解析(字符串文本){

}

如果用户是一个库类,您不能更改它,那么您可以创建一个实用程序类,并在其中添加上述方法

下面是parse方法的实现

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)));
}
公共静态用户解析(字符串文本){
列表匹配列表=新的ArrayList();
Pattern regex=Pattern.compile(“[^\\s\”]+\”([^\”]*)\“\”([^']*)”)”;
Matcher regexMatcher=regex.Matcher(文本);
while(regexMatcher.find()){
if(regexMatcher.group(1)!=null){
添加(regexMatcher.group(1));
}else if(regexMatcher.group(2)!=null){
添加(regexMatcher.group(2));
}否则{
add(regexMatcher.group());
}
}
System.out.println(匹配列表);
String[]name=matchList.get(0).split(“”);
String[]address=matchList.get(1).split(“/”);
返回新用户(名称[0]、名称[1]、地址[0]、地址[1]、地址[2]、Double.parseDouble(matchList.get(2));
}
现在,无论何时您想要解析字符串并创建用户类,都可以调用上面定义的方法

  • 干杯
我的问题更多地是关于可以使用什么逻辑将字符串分解为单独的类属性。简而言之,解析逻辑是包含双引号的整个第一行字符串?是的,它是一个完整的string@BrownTownCoder如果答案对你有帮助,你应该接受
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)));
}