4:String 构造函数

知识梳理

//1 字符串的不可变性
//2 每拼接一次 都会在内存中新开辟一个空间
//3 每赋值一次 都会在内存中新开辟一个空间
//4 字符串所有方法 都不会修改字符串本身 都是返回新字符串

知识目录

//1 根据字符返回位置 indexOf lastIndexOf
//2 根据位置返回字符 //2 替换字符串 //3 拼接字符串 //4 字符串转换为数组
//5 转换大小写

一  基本方法

1)根据字符返回索引

//1 正向查找  indexOf('要查找的字符',[开始的位置]);
//2 反向查找  lastIndexOf();
var str = '桃花开了,桃叶绿了';
console.log(str.indexOf('桃',3));//从索引号第三个查找 '桃' 

2)根据索引返回字符 [ charAt ]

//1 根据索引号返回字符
var str = 'abcdefg';
var index = str.charAt(0);
// charAt('索引号');
// console.log(index);

//典型应用:遍历字符串
for (var i = 0; i < str.length; i++) {
    console.log(str.charAt(i));
}


//2 h5新增 str(index) = charAt();
//3 根据索引号返回ASCII码 判断用户按下了哪个键 for (var i = 0; i < str.length; i++) { console.log(str.charCodeAt(i)); }

3)字符串替换 [ replace ]

var color = 'red'; 
console.log(color.replace('e','a')); //只替换第一个 替换多个需要用到正则
console.log(color.replace('替换谁','替换为谁'));


4)转换为数组  [ split ]

var str = 'red,blue,green';
str = str.split(',');
var str1 = 'red&blue&green';
str = str.split('&');

5)转换大小写

toUpperCase();//转换大写
toLowerCase();//转换小写

二 实操案例

1)求某个字符出现的位置和次数 [ 重点案例 ]

//indexOf 返回第一个元素出现的位置 找不到返回 -1
//核心算符:先找到第一个o出现的位置
//然后:只要indexOf不是-1 就继续往后查找
//因为indexOf只能查找到第一个,所以后面的查找,我们利用第二个参数,当前索加1,从而继续查找
    
//需求:abcoefoxyozzopp 求所有o出现的位置和次数
var str = 'abcoefoxyozzopp';
var index = str.indexOf('o'); //查找O第一次出现的位置 赋值给变量index
var num = 0;//统计次数的变量
while (index !== -1) {
    console.log(index);
    num++;//打印一次 计数器自增1
    index = str.indexOf('o',index + 1);//我们把找到的再赋值给index
}
//执行流程 // 第一次循环 index = 3 // 3不等于-1 条件成立 //打印o第1次出现的位置 3 //再执行indexOf查找,从上一次o出现的索引号3后面开始查找 index+1 = 4 //在索引6的位置找到了第2个 index = 6 //第二次循环 index = 6 //6不等于-1 条件成立 //打印o第2次出现的次数 6 //再执行indexOf查找,从上一次o出现的索引号6后面开始查找 index+1 = 7 //在索引9的位置找到了第3个 index = 9 //第三次循环 index = 9 //9不等于-1 条件成立 //打印o第3次出现的次数 9 //再执行indexOf查找,从上一次o出现的索引号9后面开始查找 index+1 = 10 //在索引12的位置找到了第4个 index = 12 //第四次循环 index = 12 //12不等于-1 条件成立 //打印o第4次出现的次数 12 //再执行indexOf查找,从上一次o出现的索引号12后面开始查找 index+1 = 13 //后面没有再找到 返回-1 //在执行while条件判断 -1 !== -1 为假 循环结束 //统计次数 后面新增一个num变量计数 //每打印一次index 自增1

2)判断字符串中出现次数最多的字符 并统计出现的次数 [ 重点案例 ]

//核心思路
//1 利用charAt遍历字符串 把每个字符都取出来
//2 把每个字符都保存到一个对象属性里
//3 如果对象没有该属性 = 1,如果有就 + 1; var str = 'abcoefoxyozzopp'; var obj = {}; //1 遍历每个字符存储到对象属性里面 for (var i = 0; i < str.length;i++) { var chars = str.charAt(i);//chars是字符串的每一个字符 if (obj[chars]) { //obj[chars]得到的是属性值 obj[chars]++;//如果存在就加1 } else { obj[chars] = 1;//如果不存在就等于1 } } console.log(obj);//{a: 1, b: 1, c: 1, o: 4, e: 1, …}

//2 遍历对象 找到值 var max = 0;//最大值变量 var ch = '';//保存出现次数最多的字符 for (var key in obj) { //key 得到的是属性名 //obj[key] 得到的是属性值 if (obj[key] > max) { max = obj[key]; ch = key;//把最大值的属性名给变量ch 因为key出了for in 就不起作用了 }//取最大值 } console.log(max); console.log('出现次数最多的是:' + ch);

3)替换字符串 

案例:把字符串 'abcodfozzopp' 里面的o都替换为 *
var str = 'abcodfozzopp';
while (str.indexOf('o') !== -1) {
    str = str.replace('o','*');
}
console.log(str);
str.indexOf('o') !== -1; 如果字符串里的o一直存在就继续循环

 作业

 

posted @ 2021-02-17 16:48  棉花糖88  阅读(109)  评论(0编辑  收藏  举报