ここでの目標はクラスから属性名を取得することです。これは既にJAVA Reflections
を使って行いました。しかし、私は変数命名規則、例えばfirstName
をFirst Name
に変えたいと思っています。Java/Angularjs - 変数名を普通の英語の規約に変換する
現在、.split()
を使用してposition: 0
(通常は小文字)をUppercase
に変換してから、後続の大文字が見つかるまでループし、間に空白スペースを挿入します。これを行うにはよりよい方法がありますか?
EDIT:
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;
}
結果: