题目
使用给定的参数对句子执行一次查找和替换,然后返回新句子。
第一个参数是将要对其执行查找和替换的句子。
第二个参数是将被替换掉的单词(替换前的单词)。
第三个参数用于替换第二个参数(替换后的单词)。
注意:替换时保持原单词的大小写。例如,如果你想用单词 "dog" 替换单词 "Book" ,你应该替换成 "Dog"。
如果你被难住了,记得使用 Read-Search-Ask尝试与他人结伴编程、编写你自己的代码。
这是一些对你有帮助的资源:
Array.splice()
String.replace()
Array.join()
function myReplace(str, before, after) {
return str;
}
myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
思路
- 这个题目还算好理解,意思是用 after 去str 里找到 before,并且替换他,还要保持 和before一样,首字母的大小写状态;
- 要用到4个函数:String.replace()、stringObject.toUpperCase()、stringObject.toLowerCase() 、stringObject.charAt(index);
- 先判断 before的首字母的大小写状态,并将after也转换为该状态,然后执行替换;
解答
function myReplace(str, before, after) {
if(before.charAt(0)=== before.charAt(0).toUpperCase()){ // 如果带替换的字符首字母是大写
after = after.replace(after.charAt(0),after.charAt(0).toUpperCase());//将after的首字母变为大写
str = str.replace(before,after);
}else{
after = after.replace(after.charAt(0),after.charAt(0).toLowerCase());//将after的首字母变为小写
str = str.replace(before,after);
}
return str;
}
myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
另外,还看到一个更简洁的写法:
// 解法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;
}
作者:不要变成发抖的小喵喵喵喵喵喵
链接:http://www.jianshu.com/p/4d72dfe478b5
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这2个解法,经验证,也是可以的,高人无处不在啊。
网友评论