Java / Angularjs - 将变量名称转换为普通英语约定

时间:2016-08-31 06:08:18

标签: java angularjs

我的目标是从类中检索属性名称,我已经使用JAVA Reflections完成了。但我希望能够转换变量命名约定,比如说firstNameFirst 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;
}

结果:

Current Result

2 个答案:

答案 0 :(得分:0)

我认为你的方式是唯一的方法。如果你发布你的代码,也许我们可以更清楚地了解这个问题。

答案 1 :(得分:0)

你可以使用isUpperCase()方法,如果它返回true,用空格和字母替换它,并始终将第一个字母,即indexOf(0)转换为toUpperCase()。