算法描述:使用给定的参数对句子执行一次查找和替换,然后返回新句子。
第一个参数是将要对其执行查找和替换的句子。
第二个参数是将被替换掉的单词(替换前的单词)。
第三个参数用于替换第二个参数(替换后的单词)。
注意:替换时保持原单词的大小写。例如,如果你想用单词 "dog" 替换单词 "Book" ,你应该替换成 "Dog"。
解题思路:
给了三个提示工具函数Array.splice() 、String.replace()、 Array.join() 。
提示函数为 function myReplace(str, before, after) { return str;}
第一种:
将字符串str转化为以单词为单位的多个数组,用数组中的值和before比较。
若相等,判断找到的字符串首字母是否为大写。
若是,则将after的首字母改为大写。
若不相等,继续向下寻找与before相等的字符串,重复第二步骤。
返回替换好的字符串。
第二种:
直接用after替换str中的before
再判断首字母的大小
----------------------------------------------------------------------------------------------------------------------------------------------------------
第一种是我一开始想到的,原因是对函数的不熟悉,第二种要比第一种简单的多,下面只贴第二种的代码。
function myReplace(str, before, after) {
if(/[A-Z]/.test(before.split('')[0])){
after = after.substring(0,1).toUpperCase()+after.substring(1);
}
str = str.replace(before,after);
return str;
}
myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
RegExp.test()判断首字母的大小写,split将before拆分成单个字母。
substring切割字符串,最后将改变后的after替换str中的before。