単語の最初の文字を大文字にする次のコードがあります。キー機能をワンライナーに凝縮しようとすると、期待どおりに機能していないことがわかります。これがコードです。
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. 何か助けていただければ幸いです。