題目來(lái)自freecodecamp上面的一道練習(xí)題 在線調(diào)試
使用給定的參數(shù)對(duì)句子執(zhí)行一次查找和替換,然后返回新句子。
第一個(gè)參數(shù)是將要對(duì)其執(zhí)行查找和替換的句子。
第二個(gè)參數(shù)是將被替換掉的單詞(替換前的單詞)。
第三個(gè)參數(shù)用于替換第二個(gè)參數(shù)(替換后的單詞)。
注意:替換時(shí)保持原單詞的大小寫。例如,如果你想用單詞 "dog" 替換單詞 "Book" ,你應(yīng)該替換成 "Dog"。
如果你被難住了,記得使用 Read-Search-Ask嘗試與他人結(jié)伴編程、編寫你自己的代碼。
這是一些對(duì)你有幫助的資源:
Array.splice()
String.replace()
Array.join()
String.prototype.replace()的語(yǔ)法:
str.replace(regexp|substr, newSubStr|function)
余下的問(wèn)題在于如何替換時(shí)保持原單詞的大小寫。這個(gè)指的應(yīng)當(dāng)是單詞的首字母
// 解法1
if(before[0] === before[0].toUpperCase()){
// ...
}
// 解法2
var reg = /^[A-Z]/;
if(re.test(before.charAt(0))){
// ...
}
這里順便說(shuō)一下訪問(wèn)單個(gè)字符時(shí), str[index] 和 charAt(index) 的區(qū)別:
對(duì)于 超出范圍的索引值 , str[index] 將返回 undefined ,而 charAt(index) 將返回一個(gè)空字符串。
對(duì)于 IE8以下版本 , str[index] 不被兼容,將返回 undefined。
解法
// 解法1
function myReplace(str,before,after){
if(before[0] === before[0].toUpperCase()){
after = after[0].toUpperCase() + after.slice(1);
}
str = str.replace(before,after);
return str;
}
// 解法2
function myReplace(str,before,after){
var reg = /^[A-Z]/;
if(reg.text(before.charAt(0))){
after = after.charAt(0).toUpperCase() + after.slice(1);
}
str = str.replace(before,after);
return str;
}