JavaScript中的数组对象和字符串对象(二)

字符串对象

在JavaScript中,字符串对象提供了一些用于对字符串进行处理的属性和方法

1.1字符串对象

字符串对象使用new String()来创建,在String构造函数中传入字符串,就会在返回的字符串对象中保存这个字符串

<script>
        var str=new String('送你一朵小红花')
        console.log(str);//String
        console.log(str.length);//输出结果为:7
        //看不到常见的属性
        var str1='送你一朵小红花';
        console.log(str1)//送你一朵小红花

        var obj=new String('Hello')
        console.log(typeof obj)//输出结果:object
        console.log(obj instanceof String);//输出结果:true
    </script>

由上可以看出,使用new String()返回的obj是一个对象,但是普通的字符串变量并不是一个对象,它只是一个字符串类型的数据

1.2 根据字符返回位置

字符串对象提供了用于检索元素的属性和方法

成员作用
indexOf(searchValue)获取searchValue在字符串中首次出现的位置
lastIndexOf(searchValue)获取searchValue在字符串中最后出现的位置

代码如下:了解indexOf方法和lastIndexOf方法的使用

<script>
        //indexOf:参数1:要搜索的子字符串:参数2:可选
        var str=new String('送你一朵小红花,送你一朵小红花')
        //查找 花 首次出现的位置
        var res=str.indexOf('花');
        //查找 花 从第七个位置查找 花 第一次出现的位置
        var res2=str.indexOf('花',7);
        console.log(str);
        console.log(str.length);//15
        console.log(res);//6
        console.log(res2);//14

        //lastIndexOf:参数1:要搜索的子字符串;参数2:可选
        var str1=new String('to be or not to be');
        //查找 e 从最后一个字符开始,第一次出现的位置
        var res1=str1.lastIndexOf('e');
        //查找 e 从第8个位置开始倒数,第一次出现的位置
        var res3=str1.lastIndexOf('e',8);
        console.log(str1);
        console.log(str1.length)//18
        console.log(res1);//输出结果:17
        console.log(res3);//输出结果:4

 

接下来我们通过案例进行演示。要求在一组字符串中,找到所有指定元素出现的位置以及次数,字符串为:'Hello World, Hello JavaScript'

<script>
//案例代码
        var str='Hello World, Hello JavaScript';
        var index=str.indexOf('o');
        var num=0;
        while(index!=-1){//index!=1表示可以找到o的时候
            console.log(index);//输出o出现的位置,此处结果是为4,7,17
            index=str.indexOf('o',index+1);
            num++;
        }
        console.log('o的出现的次数是:'+num);//o出现的次数是:3
    </script>

 

上述代码中,第2行代码表示需要先找到第一个。出现的位置。第3行代码设置。出现的次数初始值为0。第4行代码通过while语句判断indexOf返回值的结果,如果不是-1就继续往后进行查找,这是因为index0f只能查找到第I个,所以后面的查找需要利用第2个基本数参数来实现,给当前的索引index 加1,从而实现继续查找。需要注意的是,字符串中的空格也会被当作一个字符来处理。

1.3根据位置返回字符

在JavaScript中,字符串对象提供了用于获取字符串中的某一个字符的方法

成员作用
charAt(index)获取index位置的字符,位置从0开始计算
charCodeAt(index)获取index位置的字符的ASCII码
str[index]获取指定位置处的字符(HTML新增)

下面用代码来演示

<script>
        var str='andy';
        //获取index位置的字符
        console.log(str.charAt(0));//输出结果为:4
        //获取index位置的字符的ASCII码
        console.log(str.charCodeAt(0));//输出结果为:97(a的ASCII码值)
        for(var i=0;i<str.length;i++){
            //获取指定位置处的字符
            console.log(str[i]);
        }
    </script>

 

1.4【案例】统计出现最多的字符和次数

通过一个案例来演示charAr()方法的使用,通过程序来统计字符串中出现最多的字符和次数

<script>
        var str='Apple';
        var obj={};
        for(var i=0;i<str.length;i++){
            //3.利用chars保存字符串中的每一个字符
            var chars=str.charAt(i);
            console.log(chars);
            //4.利用对象的属性来方便查找元素
            //obj[chars]获取对象的属性的属性值
            if(obj[chars]!=true){//若果没有获取到当前字符串,值为undefined(转为布尔值为false)
                obj[chars]=1;//给当前对象的属性对应的属性值赋值为1
            }else{
                obj[chars]++;//如果获取到了当前字符串,即对应的属性+1
            }
        }
        console.log(obj);
        //2.统计出现最多的字母
        var max=0;//保存出现次数最大值
        var maxStr='';//保存出现次数最多的字母
        //2.1遍历对象的属性和方法
        for(var key in obj){
            //2.2将对象中属性的值和max进行比较
            if(obj[key]>max){
                max=obj[key];
                maxStr=key;
            }
        }
        console.log('出现最多的字符是:'+maxStr+',共出现了'+max+'次');
    </script>

 1.5 字符串操作

字符串对象提供了一些用于截取字符串,连接字符串,替换字符串的属性和方法,具体如下表

成员作用
concat(str1, str2, str3...)连接多个字符串
slice(start,[ end])
 
截取从start位置到end位置之间的一- 个子字符串
substring(star[ ,end])截取从start位置到end位置之间的.个子字符串, 基本和slice相同,但是不接收负值
substr(start[, length])截取从start位置开始到length长度的子字符串
 
toLowerCase()获取字符串的小写形式
toUpperCase()获取字符串的大写形式
split(separator[, limil)使用separator分隔符将字符串分隔成数组,limit 用于限制数量
replace(strl, str2)使用str2替换字符串中的strl,返回替换结果,只会替换第一个字符

通过代码示例进行演示

<script>
        var str='HelloWorld';
        str.concat('!');
        str.slice(1,3);
        str.substring(5);
        str.substring(5,7);
        str.substr(5);
        str.toLowerCase();
        str.toUpperCase();
        str.split('1')
        str.split('1',3);
        str.replace('world','!');
    </script>

1.6【案例】判断用户名是否合格 

<script>
        var name=prompt('请输入用户名');
        if(name.length<3||name.length>10){
            alert('用户名长度必须在3~10之间');
        }else if(name.toLowerCase().indexOf('admin')!==-1){
            alert('用户名中不能包含敏感词:admin');
        }else {
            alert('恭喜你,该用户名可以使用');
        }
    </script>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值