Search and Replace
使用给定的参数对句子执行一次查找和替换,然后返回新句子。
第一个参数是将要对其执行查找和替换的句子。
第二个参数是将被替换掉的单词(替换前的单词)。
第三个参数用于替换第二个参数(替换后的单词)。
注意:替换时保持原单词的大小写。例如,如果你想用单词 "dog" 替换单词 "Book" ,你应该替换成 "Dog"。
思路:
(1)先把句子拆分成数组;
(2)找到需要被替换的单词在数组里的位置;
(3)检测被替换单词的首字母有没有大写,如果有,就将要替换单词的首字母也转化为大写;
知识点:
(1)Array.indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1;
这个方法不仅可以查询数组中是否存在元素,也可以查到数组中元素的位置;
var i=arr.indexOf(before);
(2)Array.splice()方法通过删除现有元素和/或添加新元素来更改一个数组的内容;
这个方法是替换数组里的元素,和下面替换字符串有点相似,不过这个是直接修改原数组的;
arr.splice(i,1,after);
(3)String.charAt()方法从一个字符串中返回指定的字符;
(4)String.replace()方法返回一个由替换值替换一些或所有匹配的模式后的新字符串,
就是把字符串里的一个值换成另一个值;
after= after.replace(after.charAt(0), after.charAt(0).toUpperCase());
注意,这个方法不会修改原字符串,所以要再“=”一次!!
(5)Array.join()方法将数组(或一个类数组对象)的所有元素连接到一个字符串中。
代码:
1 function myReplace(str, before, after) { 2 var arr=str.split(' '); 3 var i=arr.indexOf(before); 4 5 if(arr[i].charAt(0).toUpperCase()===arr[i].charAt(0)){ 6 after= after.replace(after.charAt(0), after.charAt(0).toUpperCase()); 7 } 8 9 arr.splice(i,1,after); 10 str=arr.join(' '); 11 return str; 12 } 13 14 myReplace("A quick brown fox Jumped over the lazy dog", "Jumped", "leaped");