学习Js-day06

字符串学习

<script>
    // 字符串概述:
    // 字符串也是一个数据结构(串),同样的内容串在一起。因为在对应的js里面字符串属于一个值类型(值类型是常量,常量是不能变的)。
    // 字符串是不能改变的,结合昨天提到的数据结构里面串的也是一个存储结构,作为存储结构增删查改的方法(字符串增删查改不能针对本身 而是返回一个新的字符串
    // 字符串声明:
    // 1.值类型赋值
    var str = "hello world"
    // 2.以new关键词声明(引用了对应的值的地址)
    var str = new String("abc")
    // ES6新增 字符串模板
    var a = 'jack'
    var str = `hello string${a}`//esc下面这个键 解析¥{} 以变量来解析
    console.log(str);
    // new String和String的区别
    // new String是构建一个String对象(引用数据类型 有地址指向的)
    // String单纯的将对应的传入的参数转为String类型(值类型

    // 字符串的属性
    // length属性 返回字符串的长度(包含空格及换行)
    var str = 'a b'
    console.log(str.length);//3
    // 通过下标来获取对应的字符串
    var str = 'abc'
    console.log(str[0]);//a

    // 字符串的方法(返回新的字符串
    // 通过下标找字符串(char字符
    // charAt(下标)
    var str = 'abc'
    var char = str.charAt(0)//a
    console.log(char);
    // charCodeAt(ACSII码)
    var str = 'abc'
    var code = str.charCodeAt(0)//97
    console.log(code);
    // 通过字符串找下标
    // 1.indexOf
    var str = 'abc'
    console.log(str.indexOf('a'));//找得到返回0,找不到返回-1
    console.log(str.indexOf('d'));//找得到返回0,找不到返回-1
    // 可以有两个参数 第一个参数为 对应需要查询的字符串 第二个为开始查找的位置
    console.log(str.indexOf('b',2));// -1 //从下标2开始找,找到第一个出现b的位置
    var str = 'abbbccde'
    console.log(str.indexOf('b',2));// 2 //从2开始找,找第一个出现2的位置
    // 这个方法可以省略第二个参数 省略其实就是默认这个值为0

    // 2.lastIndexOf
    console.log(str.lastIndexOf('b'));//3
    console.log(str.lastIndexOf('b',0));//-1
    console.log(str.lastIndexOf('b',4));//3

    //实现以下对应的indexOf方法
    var searchStr = 'abcdefabcde'
    function indexOf(str,index){
        if(!index){//当前如果是undefined的值
            index = 0;//默认为0
        }
        // 得到str的长度
        var len = str.length
        //当前的字符串的总长度
        for(var i=index;i<searchStr.length-len;i++){
            var s = ''
            for(var j=0;j<len;j++){
                s+=searchStr[i+j]
            }
            if(s==str){
                return i
            }
        }
        return -1
    }
    console.log(indexOf('bc',4));

    //实现以下对应的lastIndexOf方法
    var searchStr = 'abcdefabcde'
    function lastIndexOf(str,index){
        if(!index && index !=0){
            index = searchStr.length-length
        }
        var len = str.length
        for(var i =index;i>=length-1;i--){
            var s = ''
            for(var j=0;j<len;j++){
                s+=searchStr[i-j]
            }
            if(s==str){
                return i
            }
        }
        return -1
    }
    console.log(lastIndexOf('e'));//10
    console.log(lastIndexOf('e',9));//4

    //3.search方法(和indexOf一样 支持正则表达式
    var str = 'abc'
    console.log(str.search(/ab/)); //  /ab/正则表达式
    console.log(str.search(/ab/,0)); //  /ab/正则表达式

    //静态方法(通过构造方式名直接调用的叫做静态方法 他是对应的static修饰的
    // fromCharCode 将对应的ASCII码转为字符串
    var str = String.fromCharCode(97)
    console.log(str);//a
    

    // concat 将多个字符串转为连接为一个字符串返回
    var str = 'hello'.concat('world')
    console.log(str);//helloworld

    // 支持正则的方法(4个)
    // 1.search查找 找到返回下标,没找到返回-1
    // 2.replace 替换 (将找到的字符串替换成一个新的字符串)
    var str = 'abca'
    var str1 = str.replace('a','hello')//将a替换成hello 只替换第一个
    console.log(str1);
    // 3.分割(返回数组) 成为一个数组 split方法 数组变成字符串 join方法 (默认以,
    var str = '1,2,3'
    // 默认不是以,作为分割 默认不分割 直接填入到数组
    console.log(str.split());//"1,2,3"
    console.log(str.split(','));//(3) ['1', '2', '3']
    // 4.match匹配(返回数组) 返回一个数组 (匹配的内容
    var str = "abcacc"
    // 默认只找第一个匹配的 加入到数组
    var arr = str.match('a')
    console.log(arr);

    // 截取的方法 substring substr
    //substring (开始的下标,结束的下标)不包含结束的下标
    var str  = 'abcdef'
    console.log(str.substring(1));//bcdef
    console.log(str.substring(1,3));//bc 截取不包含最后一个下标 (默认不填str.length
    //substr(开始的下标,截取的个数)
    console.log(str.substr(1));//bcdef
    console.log(str.substr(1,3));//bcd 从下标一开始,截取的个数为3

    //转大写 toUpperCase
    //转小写 totoLowerCase
    var str = 'abcAcD'
    console.log(str.toUpperCase());
    console.log(str.toLowerCase());
</script>

练习-1

<script>
        // 1, 已知有两个字符串str1 = ‘hello’ , str2 = ‘world’,将两个字符串组成一个;
        var str1 = 'hello'
        var str2 = 'world'
        console.log(str1.concat(str2))
        // 2, 已知字符串str = “I love BeiJing”,找出love的范围    indexOf(tmp)  tmp=”love”
        function findIndexRange(str,content){
            var start =  str.indexOf(content)
            return  [start,start+content.length]
        }
       console.log( findIndexRange('I love BeiJing','love'));
        // 3, 已知字符串str = “I hate BeiJing!”,提取第3个字符到第5个字符
        var str = 'I hate BeiJing!'
        console.log(str.substring(2,5))
        // 4, 将字符串str = “When I was young, I love a girl in neighbor class.”中,从young提取到girl。但是不许数 young, I love a girl
        var str = 'When I was young, I love a girl in neighbor class.'
        var start = str.indexOf('young')
        var end = str.indexOf('girl')+'girl'.length
        console.log(str.substring(start,end));
    </script>

练习-2:

<script>
        // 1, 去掉字符串123@zh@qq.com中的@;
        var str = '123@zh@qq.com'
        console.log(str.replace(/@/g,''));
        // 2, 任意给定的一串字符,统计字符串里面的大写字母和小写字母的个数
        //通过ascii码进行比较 大写 65->90 小写 97->122
        //遍历比对
        var str = new String('abcsDf')
        var lowCount = 0
        var uppCount = 0
        for(var index in str){
            if(str[index]>='A' && str[index]<='Z'){
                uppCount++
            }else if(str[index]>='a' && str[index]<='z'){
                lowCount++
            }
        }
        console.log(lowCount,uppCount)
        // 3, https://www.baidu.com/s?name=avery&age=20&sex=male ,  取出name, age和sex的值 (split)
        //重点 提取对应的url地址的参数
        //对象 key:value  前面的作为key 后面的作为value
        function getUrlParams(url){
            var params = {}
            //先截取 传参内容和地址内容 ['https://www.baidu.com/s','name=avery&age=20&sex=male']
            var paramsStr = url.split('?')[1] //name=avery&age=20&sex=male
            //截取传参内容的每个参数['name=avery','age=20','sex=male']
            var paramArr = paramsStr.split('&')
            //遍历每个对应的参数
            for(var param of paramArr){//param name=avery
                var arr = param.split('=') //[name,avery]
                params[arr[0]] = arr[1]
            }
            return params
        }
        var params = getUrlParams('https://www.baidu.com/s?name=avery&age=20&sex=male')
        console.log(params['name']);
        console.log(params['age']);
        console.log(params['sex']);
    </script>

 

posted @ 2022-08-01 19:25  可爱就要得到  阅读(32)  评论(0)    收藏  举报