Javascript-内置对象String

时间:2024-06-09 07:01:29

只有对象、复杂数据类型才有属性和方法。

 1.将简单数据类型(string,number,boolean,null,undefined)包装为复杂数据类型

        var temp = new String('haha');
        str = temp;//临时变量赋值给str
        temp = null;//销毁临时变量 */

注意:字符串不可变,给字符串重新赋值或者拼接时,会开辟新空间,让指针指向不同的空间,而原本的空间和里面的内容不变 

2.根据字符返回位置indexOf

        var str = '改革春风吹,春天来了';
        console.log(str.indexOf('春'));//从前面开始的第一个匹配的下标
        console.log(str.indexOf('春', 3));//从索引3开始往后查找匹配
        console.log(str.lastIndexOf('春'));//从后往前匹配 

例子1:案例1:查找字符串'abcoefoxyozzopp'中o出现的位置以及次数。

indexOf如果查不到目标就会返回-1,查到o之后不断改变新的索引+1,count用来计数

        var str = 'abcoefoxyozzopp';
        var index = str.indexOf('o');
        var count = 0;
        while (index !== -1) {
            console.log(index);
            count++;
            index = str.indexOf('o', index + 1);
        }
        console.log('o出现次数:' + count);

类似的将数组中的red出现的位置和次数查找出来:

        var arr = ['red', 'blue', 'green', 'pink', 'red'];
        var count = 0;
        var index = arr.indexOf('red');
        while (index !== -1) {
            console.log(index);
            count++;
            index = arr.indexOf('red', index + 1);
        }
        console.log('red出现次数:' + count); 

3.根据位置返回字符charAt,有下列4种用法包括charCodeAt

        var str = 'andy';
        console.log(str.charAt(3));//y
        //遍历字符串
        for (var i = 0; i < str.length; i++) {
            console.log(str.charAt(i));
        }
        //charCodeAt(index) 返回相应索引的字符ASCII码,判断用户按下了哪个键
        console.log(str.charCodeAt(0));//97
        // 3.H5新增特性
        console.log(str[0]);

判断对象是否有该属性,对象['属性名']

例子2:统计字符串'abcoefoxyozzopp'中出现次数最多的字符,并统计其数

        方法:chaAt()遍历,将每个字符都存储给对象,对象有该属性为1,如果存在了+1

 var str = 'abcoefoxyozzopp';
        var o = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i);
            if (o[chars]) {//这里是对象访问,对象['属性名'],不过chars对应的是对象变量,所以不加引号
                o[chars]++;
            }
            else {
                o[chars] = 1;
            }
        }
        console.log(o);
        //遍历对象
        var max = 0;//存放出现最多的次数
        var ch = '';//存放出现次数最多的字符
        for (var k in o) {
            if (o[k] > max) {
                max = o[k];
                ch = k;
            }
        }
        console.log('出现最多的是' + ch + ' 共' + max + '次');

4.字符串操作方法

        var str = 'haha';
        console.log(str.concat('pink'));//该方法等效于+
        // str.substr(start, length);//从start位置开始,取length个数
        //ppt
        str1 = 'andya';
        //replace
        console.log(str.replace('a', 'b'));//用b替换a,只会替换第一个

如果想要替换所有的,用while循环,str.indexOf('o') !== -1,就进行替换。

        spilt分隔符,根据分隔符划分为数组
        var str2 = 'red,pink,blue';
        console.log(str2.split(','));
        var str2 = 'red&pink&blue';
        console.log(str2.split('&'));

例子3:

        var str = 'abaasdffggghhjjkkgfddsssss3444343';
        //1、 字符串的长度
        console.log(str.length);
        //2、 取出指定位置的字符,如:0,3,5,9等
        console.log(str.charAt(0));//不存在返回-1
        console.log(str.charAt(3));
        //3、查找指定字符是否在以上字符串中存在,如:i,c ,b等
        console.log(str.indexOf('i'));
        console.log(str.indexOf('j'));
        //4、 替换指定的字符,如:g替换为22,ss替换为b等操作方法
        console.log(str.replace('g', '22'));
        console.log(str.replace('ss', 'b'));
        //5、 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
        console.log(str.substr(1, 5));//从1开始取5个长度
        //6、 找出以上字符串中出现次数最多的字符和出现的次数
        var count = 0;
        var o = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i);
            if (o[chars]) {//对象中有
                o[chars]++;
            }
            else {
                o[chars] = 1;
            }
        }
        console.log(o);
        var max = 0;
        var ch = '';
        for (var k in o) {
            if (o[k] > max) {
                max = o[k];
                ch = k;//k是存放字符的变量
            }
        }
        console.log('出现最多的是:' + ch + '共:' + max + '次'); */