您好我想将一个类的所有String
字段值转换为大写格式。我怎样才能做到这一点?请帮忙。
示例:
public class ConvertStringToUppercase{
private String field1; //to be converted Uppercase
private String field2; //to be converted Uppercase
private String field3; //to be converted Uppercase
...... //more fields
}
答案 0 :(得分:4)
public class ConvertStringToUppercase{
private String field1; //to be converted Uppercase
private String field2; //to be converted Uppercase
private String field3; //to be converted Uppercase
public void toUpperCase() {
this.field1 = this.field1.toUpperCase();
this.field2 = this.field2.toUpperCase();
this.field3 = this.field3.toUpperCase();
// ...
}
}
或者,如果你想要不变性:
public class ConvertStringToUppercase{
private String field1; //to be converted Uppercase
private String field2; //to be converted Uppercase
private String field3; //to be converted Uppercase
public ConvertStringToUppercase toUpperCase() {
return new ConvertStringToUppercase(this.field1.toUpperCase(),
this.field2.toUpperCase(),
this.field3.toUpperCase(),
// ...);
}
}
如果字段可以为空,请务必检查null。
答案 1 :(得分:3)
try {
ConvertStringToUppercase testClass = new ConvertStringToUppercase();
for (Field field : testClass.getClass().getDeclaredFields()) {
if (field.getType().equals(String.class)) {
if (!field.isAccessible())
field.setAccessible(true);
if (field.get(testClass) != null && ((String) field.get(testClass)).trim() != "") {
field.set(testClass, ((String) field.get(testClass)).toUpperCase());
}
}
}
} catch (Exception e) {e.printStackTrace();}
答案 2 :(得分:2)
您可以将反射用于快速和脏解决方案:
ConvertStringToUpperCase t = new ConvertStringToUpperCase();
for(Field f: t.getClass().getDeclaredFields()) {
if(f.getType().equals(String.class)) {
f.setAccessible(true);
f.set(t, ((String)f.get(t)).toUpperCase());
}
}
然而,这不是一个好方法,因为不应该以这种方式修改私有字段。
答案 3 :(得分:1)
你可以用反射来做,但它会很丑陋而且很慢。
使用ConvertStringToUppercase.class.getDeclaredFields()
获取Field
个对象。然后使用field.getType() == String.class
确定字段何时为String类型。
然后使用field.get(this)
获取字符串,大写字母,然后使用field.set(this, upperCaseString)
将字段设置为新值。