JS第十一讲--内置对象(下)

第五部分:字符串对象

(一)基本包装类型

为了方便基本数据类型进行操作,JS还提供了三个特殊的引用类型:String,Number,Boolean.

基本包装类型就是将简单数据类型包装成复杂数据类型,以获取一些方法.类似于java里的包装类.

如:

var str='andy';
console.log(str.length);

str是简单数据类型,没有属性和方法,只有对象才有属性和方法,但是上面的代码却可以正常执行,这是因为JS会把基本数据类型包装成复杂数据类型,其执行过程如下:

//1.生成临时变量,将简单数据类型包装成复杂数据类型
var temp=new String('andy');
//2.赋值给我们声明的字符变量
str=temp;
//3.销毁临时变量
temp=null;

(二)字符串不可变性

指的是里面的值不可变.

虽然看上去可以改变字符串的内容,但实际上是修改了地址,在内存中开辟了一个新的空间,原来的字符串不会被销毁.

所以尽量不要大量的对字符串进行赋值,也不要大量拼接字符串.疯狂消耗内存

(三)返回位置

由于字符串所有的方法,都不会修改字符串本身,所以每次修改操作完成,都会返回一个新字符串

字符串返回位置方法:

  1. indexOf('要查找的字符',n): 返回指定内容在原字符串的位置,如果找不到,返回-1.从索引号为n的位置开始找.

    var str='改革春风吹满地,春天来了';
    console.log(str.indexOf('春'));  //返回值为2
    console.log(str.indexOf('春',3));  //从索引为3开始找,返回值为8
  2. lastIndexOf():从后往前找,其他都一样.

案例:返回字符位置

查找字符串'abcoefoxyozzopp'中所有o出现的位置及次数

var str='abcoefoxyozzopp';
var arr=[];
for(var i=0;i<str.length;i++){
    if(str.indexOf('o',i)!=-1){
        i=str.indexOf('o',i);
        arr.push(i);
    }
}
console.log(arr);

(四)根据位置返回字符

三个方法:

  1. charAt(index): 返回指定位置的字符

  2. charCodeAt(index): 获取指定位置字符处的ASCII码,用处是判断用户按下了哪个键

  3. str[index]: 获取指定位置处字符

案例:统计出现次数最多的字符

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

核心算法:利用chatAt()遍历字符串,将每个字符都存储给对象,如果对象没有该属性,就设为1,如果有,就++.

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

var str='abcoefoxyozzopp';
var container={};
for(var i=0;i<str.length;i++){
    var s=charAt(i);
    if(container[s]){ //判断对象中是否有这个字母
        container[s]++; //如果有,增多一个
    }else{
       coontainer[s]=1;  //如果没有,创建一个.
    }
}
for(var k in container){ //遍历对象
    var max=0;
    var ch;
    if(o[k]>max) { //判断出现次数最多的
        max=o[k];
        ch=k;
    }
}
console.log(max,k);

(五)拼接和截取字符串

字符串操作方法:

  1. concat(str1,str2...): 拼接多个字符串,等效于+,+更常用

    var str='andy';
    console.log(str.concat('red'));
  2. substr(start,length): 截取字符串,从start的位置开始,截取length个字符.最重要,记住这个就好

  3. slice(start,end): 截取字符串,从start开始,end截止,不取end

  4. substring(start,end): 从start开始,截取到end,end不取,但是不接受负值

(六)替换字符串及转换为数组

  1. replace('被替换的字符','替换为的字符'): 替换字符串,将前面的替换为后面的

    var str='andyandy';
    console.log(str.replace('a','b'));

    输出为:bndyandy

    只会替换第一次看到的字符,如果要全局替换,需要写一个循环.

  2. split('分隔符')字符串转化为数组.取字符串中的某个字符作为分隔符,分割字符串.

    var str='red,pink,blue';
    console.log(str.split(','));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值