JS内置对象——字符串对象

/* 字符串的不可变,指的是里面的值不可变。虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
字符串所有的方法,都不会修改字符串本身(字符串是不可变的) ,操作完成会返回一一个新的字符串。 */

// 1、查找索引号
var str = '改革春风吹满地,春天来了';
console.log(str.indexOf('春', 3));//从索引3的位置开始找,

/* 案例:查找字符串”abcoefoxyozzopp"中所有o出现的位置以及次数
核心算法:先查找第一个o出现的位置
然后只要indexOf 返回的结果不是-1就继续往后查找
因为indexOf只能查找到第一个,所以后面的查找,一定是当前索引加1,从而继续查找 */
var str1 = 'oabcoefoxyozzopp';
var index = str1.indexOf('o');
var num = 0;
while (index !== -1) {
    console.log(index);
    num++;
    index = str1.indexOf('o', index + 1);
}
console.log('o出现的次数是: ' + num);

//2、根据位置返回字符
console.log(str.charAt(3));
console.log(str.charCodeAt(3)); //返回相应索引号的字符ASCII值目的:判断用户按 下了那个键
console.log(str[0]); //h5新增

//案例:判断一个字符串' abcoefoxyozzopp'中出现次数最多的字符,并统计其次数。
/* 核心算法:利用charAt()遍历这个字符串
        把每个字符都存储给对象,如果对象没有该属性,就为1,如果存在了就+1
        遍历对象,得到最大值和该字符*/
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[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]; // o[k] 得到的是属性值
        ch = k; // k得到是属性名
    }
}
console.log(max);
console.log('最多的字符是' + ch);

//3、拼接concat
console.log(str.concat('red'));

//4、截取
console.log(str.substr(2, 2)); //从索引2的位置开始,截取2个

// 5、替换
console.log(str1.replace('o', 'b')); //把o替换成b,只替换第一个o

// 6、字符串转为数组
var str2 = 'c,java,js,css'
console.log(str2.split(','));
posted @ 2022-05-17 09:30  MuJinHK  阅读(67)  评论(0)    收藏  举报