##お題
文章をタイトルケース変換する。
*Title Case 頭文字だけが大文字の単語
script.js
function titleCase(str) {
//write your code.
}
titleCase("i'm a little tea pot");
##出力結果 例
script.js
("sHoRt AnD sToUt") // "Short And Stout"
("I'm a little tea pot") // "I'm A Little Tea Pot"
("HERE IS MY HANDLE HERE IS MY SPOUT") // "Here Is My Handle Here Is My Spout"
##主に使った関数
charAt()
substring()
join()
##最初に試したコード
script.js
function titleCase(str) {
var t = str.split(' ');
var a =[];
for(var i= 0; i < t.length;i++){
a.push(t[i].charAt(0).toUpperCase() + t[i].substring(1).toLowerCase());
}
return a.join(" ");
}
titleCase("i'm a little tea pot");
##考え方
・split(' ')で文章を単語に切り分けて変数tに入れる。
・charAt(0).toUpperCase()で単語の一文字目を大文字にして用意した配列aにpushする。
・substring(1).toLowerCase()で単語の二文字目から残り部分を小文字にして配列aにpushする。
・for文 i で文章の単語数だけ処理を繰り返す。
最後に配列aの単語をjoin(' ')で文章にする。
##mapを使ったコード
script.js
function titleCase(str) {
var convertToArray = str.toLowerCase().split(" ");
var result = convertToArray.map(function(val){
return val.replace(val.charAt(0), val.charAt(0).toUpperCase());
});
return result.join(" ");
}
titleCase("I'm a little tea pot");
##正規表現を使ったコード
script.js
function titleCase(str) {
return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
}
###他にもコードが浮かんだ方、コメントお待ちしてます。