有一个User类 有4个属性 firstname、lastname、phont、address。
然后有一个字符串,格式为"field1\tvalue1\nfield2\tvalue2\n...." 比如“firstname\tzs\nlastname\tls\nphont\t5467546\naddress\tshanghai\n"怎么样把字符串解析出来并封装成一个 user对象? 很穷,没分。多谢指导!!
然后有一个字符串,格式为"field1\tvalue1\nfield2\tvalue2\n...." 比如“firstname\tzs\nlastname\tls\nphont\t5467546\naddress\tshanghai\n"怎么样把字符串解析出来并封装成一个 user对象? 很穷,没分。多谢指导!!
String []pairs = test.split(‘\');
User user = new User();
如果格式固定,可以直接按顺序set字段变量
如果不固定,得使用反射
String []pairs = test.split("\n");
for(int i=0;i<pairs.length;i++){
System.out.println(pairs[i]);
}解析结果为:
firstname zs
lastname ls
phont 5467546
address shanghai然后再用:split("\t")解析上面的结果,存入即可User即可!!!
String []pairs = test.split("\n");
for(int i=0;i<pairs.length;i++){
System.out.println(pairs[i]);
}执行结果:
firstname zs
lastname ls
phont 5467546
address shanghai然后对上面的结果,每组都用split("\t");解析即可!!!
User user = null;
String str = "firstname\tzs\nlastname\tls\nphont\t5467546\naddress\tshanghai";
Pattern p = Pattern.compile("([^\\t\\r\\n]+)\\t([^\\t\\r\\n]+)");
Matcher m = p.matcher(str);
while (m.find()) {
if (user == null) user = new User();
String field = m.group(1);
String value = m.group(2);
// 调用其 setXXX 函数
String methodName = "set" + Character.toUpperCase(field.charAt(0)) + field.substring(1);
try {
Method method = User.class.getMethod(methodName, new Class[]{String.class});
method.invoke(user, new Object[]{value});
} catch (Exception e) { e.printStackTrace(); } /*
// 直接访问其私有属性, 但不建议这么用
try {
Field theField = User.class.getDeclaredField(field);
theField.setAccessible(true);
theField.set(user, value);
} catch (Exception e) { e.printStackTrace(); }
*/
}
System.out.println(user.getFirstname());
} private String firstname;
private String lastname;
private String phont;
private String address;
public String getFirstname() {
return this.firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return this.lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getPhont() {
return this.phont;
}
public void setPhont(String phont) {
this.phont = phont;
}
public String getAddress() {
return this.address;
}
public void setAddress(String address) {
this.address = address;
}
}