1

単語の最初の文字を大文字にする次のコードがあります。キー機能をワンライナーに凝縮し​​ようとすると、期待どおりに機能していないことがわかります。これがコードです。

import java.util.*;
public class CapitalizeName {
   public static void main(String[] args) {
      String name="My naMe is ALex";
      String words="";
      String[] names=name.split(" ");
      for (String w: names) {
         w=w.toUpperCase(); //line 8
         w=w.replace(w.substring(1), w.substring(1).toLowerCase());  //line 9    
         //this single liner doesnot work:
         //w=w.toUpperCase().replace(w.substring(1), w.substring(1).toLowerCase());
        words+=w+" ";
      }
      System.out.println(words.trim());
     }  
    } 

出力は次のとおりです。

私の名前はアレックスです

行 8 と行 9 をコメントアウトし、行 9 のコメントを外して 1 つのライナーを作成すると、予期しない出力が次のように表示されます:MY NAME IS ALEX. 何か助けていただければ幸いです。

4

2 に答える 2

1

この1行のコードで機能します

w = w.toUpperCase().replace(w.toUpperCase().substring(1),
                    w.substring(1).toLowerCase());
于 2013-07-16T03:53:54.583 に答える