12.JavaScript-内置对象-字符串

目录

一、基本包装类型

二、字符串不可变

三、根据字符返回位置

1. 根据字符串返回位置 indexOf('要查找的字符',起始的位置)

2. 案例:

四、根据位置返回字符

1.  charAt()

2. charCodeAt()

3. str[index] H5新增

4. 案例:返回字符串中出现最多的字符,并且返回次数

五、字符串的拼接和截取

1. concat() 可以拼接一个或多个字符串,等效于 +

2. substr(截取初始索引位置,截取的数量) 字符串截取  重点记住这个

3.  slice(start, end) 截取字符串, 参数指的都是索引, 不包含end

4. substring(start, end) 截取字符串, 参数指的都是索引, 不包含end, 和slice() 基本一致, 但是不接受赋值

六、字符串中字符元素的替换

1. replace(被替换的字符,替换的字符)

七、字符串转换为数组

八、字符转换为大小写

1. toUpperCase()  转换大写

2. toLowerCase()  转换小写


一、基本包装类型

基本包装类型:就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。

        var str = 'nihao';

        console.log(str.length);

按道理基本数据类型是不具备属性和方法的,而对象才有。但上面的代码却可以执行,是因为js会把基本数据类型转化为了复杂数据类型

执行的过程如下:

1、生成临时变量,把简单类型包装为复杂数据类型

        var temp = new String('nihao');

2、赋值给我们声明的字符变量

        str = temp;

3、销毁临时变量

        temp = null;


二、字符串不可变

字符串不可变,不要大量的拼接字符串

虽然看上去是内容改变,其实是地址变了,内存中开辟了一个新的空间用于存放新的字符串

        var str = 'abc';

        str = 'nihao';

当重新给str赋值的时候,常量'abc'并不会被修改,依然存在在内存

重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变


三、根据字符返回位置

1. 根据字符串返回位置 indexOf('要查找的字符',起始的位置)

var str = '你好啊,哈哈你也好';

        console.log(str.indexOf('你'));

        console.log(str.indexOf('你', 1)); //6

2. 案例:

查找字符串中相同的数出现的次数

核心算法: 先查找第一个数出现的位置 indexOf()

然后indexOf 如果返回的结果不是 -1 ,则继续查找

因为indexOf 只能查找到第一个,所以后面的查找,以ID那个是当前的索引加1,然后继续查找

  var str = "abcdaefghajkioalsnb";

  var index = str.indexOf('a');

  var num = 0;

  while (index !== -1) {

            console.log(index);

            num++;

            index = str.indexOf('a', index + 1);

        }

  console.log('a出现的次数是:' + num);


四、根据位置返回字符

var str = 'afvcddgf';

1.  charAt()

        console.log(str.charAt(2)); // v

        for (var i = 0; i < str.length; i++) {

            console.log(str.charAt(i));

        }

2. charCodeAt()

获取指定位置处字符的ASCII码,用来判断用户在键盘上输入的是哪一个键

        console.log(str.charCodeAt(0)); //97

3. str[index] H5新增

获取指定位置处字符  

        console.log(str[1]); // f

4. 案例:返回字符串中出现最多的字符,并且返回次数

统计一个字符串中出现次数最多的字符,并统计其次数 'abcoefoxyozzopp'

核心思路:

1、利用charAt() 遍历这个字符串

2、把每个字符串都存储给对象,如果对象没有该属性,则赋值为1,如果存在则+1

3、遍历对象,得到最大值和该字符

        var str = 'abcoefoxyozzopp';

        var obj = {};

        for (var i = 0; i < str.length; i++) {

            var chars = str.charAt(i); // chars 取出来字符串里每一个字符

            if (obj[chars]) { // obj[chars] 到的是属性值

                obj[chars]++;

            } else {

                obj[chars] = 1;

            }

        }

        console.log(obj);

        var max = 0;

        var ch = '';

        for (var k in obj) {

            // k指的是属性

            // obj[k] 指的是属性值

            if (obj[k] > max) {

                max = obj[k];

                ch = k;

            }

        }

        console.log('最大值是:' + max);

        console.log('最多的字符是:' + ch);


五、字符串的拼接和截取

1. concat() 可以拼接一个或多个字符串,等效于 +

        var str = '123';

        console.log(str.concat(456)); // 123456

2. substr(截取初始索引位置,截取的数量) 字符串截取  重点记住这个

        var str1 = '改革春风吹满地';

        console.log(str1.substr(2, 2)); // 春风

3.  slice(start, end) 截取字符串, 参数指的都是索引, 不包含end

        var str = '离离原上草,春风吹又生';

        console.log(str.slice(2, 5));

4. substring(start, end) 截取字符串, 参数指的都是索引, 不包含end, 和slice() 基本一致, 但是不接受赋值


六、字符串中字符元素的替换

1. replace(被替换的字符,替换的字符)

字符串的替换,一次只能替换一个,如果全部替换,可以通过循环

        var str = 'andy';

        console.log(str.replace('a', 'b'));//bndy

案例:替换下方字符串中所有的o, 采用遍历的方法, 判断str1.indexOf() 是否等于 - 1, 如果等于说明没有这个值, 如果不等于说明有这个字符,就可以替换了

        var str1 = 'abcoefoxyozzopp';

        while (str1.indexOf('o') !== -1) {

            str1 = str1.replace('o', '+');

        }

        // for (var i = 0; i < str1.length; i++) {

        //     if (str1.indexOf('o') !== -1) {

        //         str1 = str1.replace('o', '+');

        //     }

        //     if (str1[i] === 'o') {

        //         str1 = str1.replace('o', '+');

        //     }

        // }

        console.log(str1);


七、字符串转换为数组

字符转换为数组 split('分隔符')  与前面学过的 join() 把数组转换为字符串

       var str = 'red,pink,blue';

        console.log(str.split(',')); // [red,pink,blue]

        var str1 = 'red&pink&blue';

        console.log(str1.split('&')); //[red&pink&blue]

注意:split('')括号里的分隔符取决于字符串里的符号,如果没有符号相隔,是不能分隔的


八、字符转换为大小写

1. toUpperCase()  转换大写

     var str = 'AbCdEfG';

     console.log(str.toUpperCase()); // ABCDEFG

2. toLowerCase()  转换小写

    var str1 = 'AbCdEfG';

    console.log(str1.toLowerCase()); // abcdefg

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_LiuP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值