我的目标是从类中检索属性名称,我已经使用JAVA Reflections
完成了。但我希望能够转换变量命名约定,比如说firstName
到First Name
。
我目前的想法是使用.split()
将position: 0
(通常是小写)转换为Uppercase
,然后循环直到找到后续的UpperCases,并在其间推送一个空格。有没有更好的方法呢?
编辑:如果您有兴趣,这是我目前的方法:
public List<String> getProfileConstraintTemplateEnglish() {
//what I want to return
List<String> transformedList = new ArrayList<>();
//The reflection that I'm getting
List<ResultProfileConstraintTemplate> tmp = constraintService.getProfileCTml();
//loop each obj in reflection list
for (ResultProfileConstraintTemplate r : tmp) {
//get the letters first from the title in obj
String[] field = r.getTitle().split("");
//this is the transformed string in each tmp.
String transformed = "";
//converting the array to a list for simpler addition.
List<String> fieldString = Arrays.asList(field);
//adding a counter to know which is the "first" position.
int counter = 0;
for (String s : fieldString) {
//first letter
if (counter == 0) {
transformed += s.toUpperCase();
}
//everything else
if (counter != 0 && s.equals(s.toUpperCase())) {
transformed+= " ";
transformed+=s;
}
else if(counter != 0 && s.equals(s.toLowerCase())){
transformed+=s;
}
//increment counter
counter++;
}
//add the transformed word to list.
transformedList.add(transformed);
}
return transformedList;
}
结果:
答案 0 :(得分:0)
我认为你的方式是唯一的方法。如果你发布你的代码,也许我们可以更清楚地了解这个问题。
答案 1 :(得分:0)
你可以使用isUpperCase()方法,如果它返回true,用空格和字母替换它,并始终将第一个字母,即indexOf(0)转换为toUpperCase()。