2016-08-31 9 views
2

ここでの目標はクラスから属性名を取得することです。これは既にJAVA Reflectionsを使って行いました。しかし、私は変数命名規則、例えばfirstNameFirst 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; 
} 

結果:

Current Result

答えて

0

私はあなたの方法が唯一の方法だと思いますこれは、あなたのうちのどれかが興味があれば私の現在の方法です。あなたのコードを投稿すれば、おそらくもっと問題を明らかにすることができます。

0

isUpperCase()メソッドを使用できます。それがtrueを返す場合は、スペースと文字で置き換えて、最初の文字、つまりindexOf(0)をtoUpperCase()に変換します。

関連する問題