##お題
・文章から目的の単語を探して置き換える。
・目的の単語が大文字から始まる場合は置き換える単語も大文字にする。
function replace(str, before, after) {
//write your code.
return arr;
}
replace("His name is Tom", "Tom", "john");//"His name is John"
##出力結果 例
replace("He is Sleeping on the couch", "Sleeping", "sitting") // "He is Sitting on the couch"
replace("This has a spellngi error", "spellngi", "spelling") // "This has a spelling error"
replace("Let us get back to more Coding", "Coding", "algorithms") // "Let us get back to more Algorithms"
##使ったもの
split()
indexOf()
charAt()
slice()
replace()
##考え方
大文字の判定
・indexOfで目的の単語(before)が文章(str)にある位置(index)を取得する。
・文章(arr)から上記のindexを使って文字を抜き出して、toUpperCase()で大文字にしたものと一致するかif文を使って判定する。
・一致した場合、afterの単語の一文字目をcharAt(0)で指定して、toUpperCaseで大文字にする。のこりはslice(1)で切り出して一緒にafterへ再代入する。
置き換え
・配列(arr)を用意して、split()で切り分けた単語を入れる。
・for文でarr[i]をまわし、beforeと一致したときにreplace()で置き換える。
arrを返しておわり
##コード
function replace(str, before, after) {
var arr = [];
arr = str.split(' ');
var index = str.indexOf(before);
if (str[index] === str[index].toUpperCase()) {
after = after.charAt(0).toUpperCase() + after.slice(1);
}
for(var i = 0; i < str.length; i++){
if(arr[i] === before){
arr = str.replace(before,after);
}
}
return arr;
}
replace("His name is Tom", "Tom", "john");
###他にもコードが浮かんだ方、コメントおまちしております。
*例外が発生してました。
@think49 さん 指摘、コードの記述ありがとうございます。