js学习笔记基础分享--字符串对象

字符串对象方法:

indexOf():

语法:str.indexOf(searchValue [, fromIndex])

indexOf() 方法返回调用它的 String 对象中第一次出现的指定值的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1。

习题:查找字符串"abcoefoxyozopp"中所有o出现的位置以及次数

        //查找字符串某个字符出现的次数
        //查找字符串"abcoefoxyozopp"中所有o出现的位置以及次数
        //核心算法:先查找出第一个o的位置
        //然后 只要 indexOf 返回的结果不是-1就继续往后找
        //因为indexOf 只能查找到第一个,所以后面的查找,一定是当前索引加1,从而继续查找
        //语法:str.indexOf(searchValue [, fromIndex])
        var str = "abcoefoxyozopp";
        var index = str.indexOf("o");
        var num = 0;
        //console.log(index);//3
        while (index != -1) {//如果未找到该值,则返回 -1。
            console.log(index);//如果不是-1,则匹配到了o,打印出下标
            num++;//记录次数+1
            index = str.indexOf("o", index + 1);//从index+1开始搜索
        }
        console.log("o出现的次数:" + num);
        //3,6,9,11

反思:["red","blue","red","green","pink","red"],求red出现的位置和次数

//课后作业:["red","blue","red","green","pink","red"],求red出现的位置和次数
        var arr = ["red", "blue", "red", "green", "pink", "red"];
        var index = arr.indexOf("red");
        var num = 0;
        // console.log(index);//0
        while (index != -1) {
            console.log(index);
            num++;
            index = arr.indexOf("red", index + 1); //0,2,5
        }
        console.log("o出现的次数是:" + num); //3

根据位置返回字符(重点)

方法名说明使用
charAt(index)返回指定位置的字符str.charAt(index)
charCodeAt(index)获取指定位置的字符的ASCII码str.charCodeAt(index)
str[index]获取指定位置处字符HTML5,IE8+支持和charAt()等效

例题:

        //根据位置返回字符
        //1、charAt(index)根据位置返回字符
        var str = "andykjk";
        console.log(str.charAt(3)); //语法:str.charAt(index)
        //y
        //因此我们可以用for循环遍历字符串所有字符
        for (var i = 0; i < str.length; i++) {
            console.log(str.charAt(i));
        }

        //2、charCodeAt(index)获取指定位置的字符的ASCII码,目的判断用户按下了键盘的哪个键
        console.log(str.charCodeAt(0)); //97

        //3、str[index]H5新增的
        console.log(str[0]); //a

知识点补充:

//补充知识点

        //有一个对象,对象调用属性的方法:对象["属性名"],来判断是否有该属性

        var o = {

            age: 18

        }

        if (o["sex"]) {

            console.log("里面有该属性");

        } else {

            console.log("里面无该属性");//输出

        }

例题扩展:判断一个字符串"abcoefoxyozzopp"中出现最多的字符并统计其次数


        //判断一个字符串"abcoefoxyozzopp"中出现最多的字符并统计其次数
        //核心算法:利用chatAt()遍历整个字符串
        //把每个字符都存储给对象,如果对象没有该属性,就为1,如果已经存在就加1
        //遍历对象,得到最大值和该字符
        //o.a=1
        //o.b=1
        //o.c=1
        //o.o=4
        var str = "abcoefoxyozzopp";
        var o = {}; //声明对象 
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i); //chars是字符串的每一个字符,存储到变量中
            if (o[chars]) { //o[chars]得到的是属性值,第一次o["a"],chars="a","b","c".....
                o[chars]++;
            } else {
                o[chars] = 1;
            }
        }
        console.log(o); //Object { a: 1, b: 1, c: 1, o: 4, e: 1, f: 1, x: 1, y: 1, z: 2, p: 2 }
        //遍历对象for in
        var max = 0;
        var ch = "";
        for (var k in o) { //k得到的是属性名,o[k]得到的是属性值
            if (o[k] > max) {
                max = o[k];
                ch = k;
            }
        }
        console.log(max);//4
        console.log("最多的字符是" + ch);//最多的字符是o

字符串操作方法

方法名说明
concat(str1,str2,str3...)concat()方法用于连接俩个或多个字符串。拼接字符串,等效于+,+更常用
substr(start,length)从start开始(索引号),length为取得个数
slice(start,end)从start开始,截取到end位置,end取不到(都为索引号)
substring(start,end)从start开始(索引号),截取到end位置,end取不到,基本和slice一致,但不接受负值

个人理解:

slice(start,end)当end为负值时从后面开始匹配字符、substring(start,end)当end为负值时会被当作 0

详细文档我已附上链接!

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/slice

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/substring

//字符串操作方法
        //1.concat("","","")
        var str = "kjk";
        console.log(str.concat("是个帅锅")); //kjk是个帅锅

        //2.substr(start,length)  start 起始位置 length 截取几个字符
        var str1 = "kjk是个帅锅";
        console.log(str1.substr(2, 5)); //k是个帅锅
        //第一个2是从索引号2开始,5是取5个

        //3.slice(start,end)  start 起始位置  end 结束位置 不包含结束位置
        var str2 = "kjk是个帅锅";
        console.log(str2.slice(2, 5)); //k是个
        console.log(str2.slice(2, -1)); //k是个帅
        
        //4.substring(start,end) start 起始位置  end 结束位置 不包含结束位置 但end不能为负值
        var str3 = "kjk是个帅锅";
        console.log(str3.substring(2, 5)); //k是个
        console.log(str3.substring(2, -1)); //kj 负值或NaN被当做0,start>end时,交换位置,也就是0,2 

字符串操作方法扩展:

1.替换字符 replace("被替换的字符","替换的字符") 只会替代1个字符


        //1.替换字符 replace("被替换的字符","替换的字符") 只会替代1个字符
        var str = "kjkplmm";
        console.log(str.replace("k", "a"));//ajkplmm只会替代第一个k
//有一个字符串"abcoefoxyozzopp",要求把里面所有的o替换为*
        var str1 = "abcoefoxyozzopp";
        while (str1.indexOf("o") !== -1) { //未找到o则返回-1
            str1 = str1.replace("o", "*");
        }
        console.log(str1); //abc*ef*xy*zz*pp

2.字符转换为数组 split("分隔符") 前面学过join将数组转换为字符串


        //2.字符转换为数组 split("分隔符") 前面学过join将数组转换为字符串
        var str2 = "red,green,black,yellow,pink,purple"
        console.log(str2.split(","));
        var str2 = "red*green*black*yellow*pink*purple"
        console.log(str2.split("*"));
        //Array(6) [ "red", "green", "black", "yellow", "pink", "purple" ]

3.大小写转换 toUpperCase()、toLowerCase()

//3.大小写转换 toUpperCase()、toLowerCase()
        console.log('alphabet'.toUpperCase()); // 'ALPHABET'
        console.log('中文简体 zh-CN || zh-Hans'.toLowerCase());
        // 中文简体 zh-cn || zh-hans
        console.log("ALPHABET".toLowerCase());
        // "alphabet"

出自于听pink老师的视频知识点总结

最终习题:

给定一个字符串,"abaacdffggghhjjkkgfddsssss3444343",问:

        1.字符串的长度

        2.取出指定位置的字符,如"0,3,5,9"等

        3.查找指定字符是否在以上字符串中存在,如:i,c,b等

        4.替代指定字符,如g替代为22,ss替代为b等

        5.截取指定开始位置到结束位置的字符串,如:取得1-5的字符串

        6.找出以上字符串中出现最多的字符以及出现的次数

 

 

        //1.字符串的长度
        var str = "abaacdffggghhjjkkgfddsssss3444343";
        console.log(str.length); //33

        //2.取出指定位置的字符,如"0,3,5,9"等
        var str1 = "abaacdffggghhjjkkgfddsssss3444343";
        console.log(str1.charAt(0)); //a
        console.log(str1.charAt(3)); //a
        console.log(str1.charAt(5)); //d
        console.log(str1.charAt(9)); //g

        // 3.查找指定字符是否在以上字符串中存在,如:i,c,b等
        var str2 = "abaacdffggghhjjkkgfddsssss3444343";
        console.log(str2.indexOf("i")); //-1(未找到返回-1)
        console.log(str2.indexOf("c")); //4
        console.log(str2.indexOf("b")); //1

        // 4.替代指定字符,如g替代为22,ss替代为b等
        var str3 = "abaacdffggghhjjkkgfddsssss3444343";
        while (str3.indexOf("g") !== -1 || str3.indexOf("ss", "b") !== -1) {
            str3 = str3.replace("g", "22");
            str3 = str3.replace("ss", "b");
        }
        console.log(str3); //abaacdff2222ghhjjkkgfddbbs3444343

        // 5.截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
        var str4 = "abaacdffggghhjjkkgfddsssss3444343";
        console.log(str4.slice(1, 5)); //baac
        console.log(str4.substring(1, 5)); //baac

        // 6.找出以上字符串中出现最多的字符以及出现的次数
        var str5 = "abaacdffggghhjjkkgfddsssss3444343";
        var o = {}; //声明一个对象
        var max = 0;
        var ch = "";
        for (var i = 0; i < str5.length; i++) {
            var chars = str5.charAt(i);
            if (o[chars]) {
                o[chars]++;
            } else {
                o[chars] = 1;
            }
        }
        //console.log(o);
        //Object { 3: 3, 4: 4, a: 3, b: 1, c: 1, d: 3, f: 3, g: 4, h: 2, j: 2, … }
        for (var k in o) { //k得到的是属性名,o[k]得到的是属性值
            if (o[k] > max) {
                max = o[k];
                ch = k;
            }
        }
        //console.log(max);//5
        console.log("出现次数最多的字符是:" + ch);
        //出现次数最多的字符是:s

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值