JavaScript常见字符串方法

短横变驼峰

student-man-xiaoming 变为studentManXiaoming
方法1:
(1)用字符串的split方法变为数组
(2)遍历数组每一项,首字母都变为大写,然后与剩余字母连接join

    <script type="text/javascript" charset="UTF-8">
        var str="student-man-xiaoming";
        //拆为数组
        var strArr=str.split("-");
        console.log("第一步输出:"+strArr);
        //遍历数组,驼峰第一项不变为大写
        for(var i=1;i<strArr.length;i++){
            var chars=strArr[i];
            strArr[i]=chars[0].toUpperCase()+chars.slice(1);
        }
        console.log("第二步输出:"+strArr);
        //join所有字符
        console.log("最终结果输出:"+strArr.join(""));
    </script>

这里写图片描述
方法2:

   <script type="text/javascript" charset="UTF-8">
        var str="student-man-xiaoming";
        //用正则表达式替换replace
        str=str.replace(/\-(\w)/g,function (match,$1) {
            return $1.toUpperCase();
        });
        console.log(str);
    </script>

这里写图片描述

寻找连续三项的字符串

“aabbbccddddee”返回[2,3,4,7,8,9,10]
双指针法99%能解决字符串问题。如:“最大连续相同的子串;最大连续重复子串”

这里写图片描述

    <script type="text/javascript" charset="UTF-8">
       var str="aabbbccddddee";
       //指针的位置
        var i=0;
        var j=1;
        var result=[];
        //开始循环
        while(i<str.length){
         //判断指针所指的数字是否相等
            if(str[i]!=str[j]) {
                //再判断i和及是否相差3及以上
                if (j - i >= 3) {
                    //若true,则将index放入result数组中
                    for (var m = i; m <= j - 1; m++) {
                        result.push(m);
                    }
                }
                i = j;
            }
                //相等或不相等,都j++
                j++;
         }
        console.log(result);
    </script>

这里写图片描述

给数字加上千分位符

12345678901,返回“12,345,678,901”
数组和字符串互换方法很好用,要敏感。实际上就是[12,345,678,901],然后join(“,”)。问题转化为:把12345678901拆分为数组!

这里写图片描述

    <script type="text/javascript" charset="UTF-8">
       var num=12345678901;
       //获取数字位数
       var length=num.toString().length;
       //从-3位开始
       var start=-3;
       //向上取整3的倍数位结束
       var end=-Math.ceil(length/3)*3;
       //从-3位开始截取第一个片段
       var result=[num.toString().slice(-3)];
       console.log("第一段为:"+result);
       //第一个片段以后,直到结束位,都每间隔3位截取一次
       for(var i=start-3;i>=end;i-=3){
           //逐渐向前插入片段
           var str=num.toString().slice(i,i+3);
           console.log("截取字段为:"+str);
           result.unshift(str);
       }
       console.log("结果为:"+result);
    </script>

这里写图片描述

  <script type="text/javascript" charset="UTF-8">
       var str="12345678901";
       /*(?=)定语从句,$单词末尾
       *从全局找距单词末尾3或3的倍数的数字,并将其间隙替换成","*/

       str=str.replace(/\B(?=(\d{3})+$)/g,",");
       console.log(str);
    </script>

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章