zoukankan      html  css  js  c++  java
  • js的字符串代码库及讲解

    1、字符串操作

       1.1去除字符串空格

    元字符 :
          s:空格或者空白等 
          ^ : 限定开始位置 => 本身不占位置
          $ : 限定结束位置 => 本身不占位置
          | : 或者
          () : 分组
    代表次数的量词元字符:       
    * : 0到多个       + : 1到多个
    //去除空格  type 1-所有空格  2-前后空格  3-前空格 4-后空格
    function trim(str, type) {
        switch (type) {
            case 1:
                return str.replace(/s+/g, "");
            case 2:
                return str.replace(/(^s*)|(s*$)/g, "");
            case 3:
                return str.replace(/(^s*)/g, "");
            case 4:
                return str.replace(/(s*$)/g, "");
            default:
                return str;
        }
    }

       1.2 字母大小写切换

        replace中的function的用法参考该博主的文章:http://www.cnblogs.com/zhangym118/p/6235998.html

    // 没有分组的情况 
    'abcdefg'.replace(/de/g, function(a, b, c, d, e, f) {
        console.log(a, b, c, d, e, f)
    });
    //输出的结果: 
    //de 3 abcdefg undefined undefined undefined
    // 1:正则匹配到的字符串,2:匹配到的字符串在字符串中的位置 3:原始字符串
    
    
    
    // 有分组的清空:一个分组,2个分组
    'abcdefg'.replace(/(c)/g, function(a, b, c, d, e, f) {
        console.log(a, b, c, d, e, f)
    });
    // 输出 的结果
    // c c 2 abcdefg undefined undefined
    //1:正则匹配到的字符串  2:分组中匹配到的字符串(0-n),分组越多,从参数2依次往后继续输出  3:匹配到的字符串在字符串中的位置  4:原始字符串

      所以 :

    console.log(changeCase('aseasd', 1)) 
    case 1: return str.replace(/^(w)(w+)/, function(v, v1, v2, v3, v4) { console.log("v:" + v); // 正则匹配到的字符串 console.log("v1:" + v1); // 第一个分组匹配到的字符串 console.log("v2:" + v2); // 第二个分组匹配到的字符串 console.log("v3:" + v3); // 匹配到的字符串在字符串中的位置 console.log("v4:" + v4); // 原始字符串 return v1.toUpperCase() + v2.toLowerCase(); });


    /*type
    1:首字母大写   
    2:首页母小写
    3:大小写转换
    4:全部大写
    5:全部小写
     * */
    //changeCase('asdasd',1)
    //Asdasd
    function changeCase(str,type)
    {
        function ToggleCase(str) {
            var itemText = ""
            str.split("").forEach(
                function (item) {
                    if (/^([a-z]+)/.test(item)) {
                        itemText += item.toUpperCase();
                    }
                    else if (/^([A-Z]+)/.test(item)) {
                        itemText += item.toLowerCase();
                    }
                    else{
                        itemText += item;
                    }
                });
            return itemText;
        }
        switch (type) {
            case 1:
                return str.replace(/^(w)(w+)/, function (v, v1, v2) {
                    return v1.toUpperCase() + v2.toLowerCase();
                });
            case 2:
                return str.replace(/^(w)(w+)/, function (v, v1, v2) {
                    return v1.toLowerCase() + v2.toUpperCase();
                });
            case 3:
                return ToggleCase(str);
            case 4:
                return str.toUpperCase();
            case 5:
                return str.toLowerCase();
            default:
                return str;
        }
    }

        1.3字符串循环复制

    //repeatStr(str->字符串, count->次数)
    //repeatStr('123',3)
    //"123123123"
    function repeatStr(str, count) {
        var text = '';
        for (var i = 0; i < count; i++) {
            text += str;
        }
        return text;
    }

       1.4 字符串替换

    //字符串替换(字符串,要替换的字符,替换成什么)
    function replaceAll(str,AFindText,ARepText){
       raRegExp = new RegExp(AFindText,"g");
       return str.replace(raRegExp,ARepText);
    }

       1.5 替换成 * (默认)

    //replaceStr(字符串,字符格式, 替换方式,替换的字符(默认*))
    //
    替换方式:[1,4,3] 前面留1个字符,中间4个字符转成*,后面留3的字符 function repeatStr(str, count) { var text = ''; for (var i = 0; i < count; i++) { text += str; } return text; } function replaceStr(str, regArr, type, ARepText) { var regtext = '', Reg = null, replaceText = ARepText || '*'; //replaceStr('18819322663',[3,5,3],0) //188*****663 //repeatStr是在上面定义过的(字符串循环复制),大家注意哦 if (regArr.length === 3 && type === 0) { regtext = '(\w{' + regArr[0] + '})\w{' + regArr[1] + '}(\w{' + regArr[2] + '})' Reg = new RegExp(regtext); var replaceCount = repeatStr(replaceText, regArr[1]); return str.replace(Reg, '$1' + replaceCount + '$2') } //replaceStr('asdasdasdaa',[3,5,3],1) //***asdas*** else if (regArr.length === 3 && type === 1) { regtext = '\w{' + regArr[0] + '}(\w{' + regArr[1] + '})\w{' + regArr[2] + '}' Reg = new RegExp(regtext); var replaceCount1 = repeatStr(replaceText, regArr[0]); var replaceCount2 = repeatStr(replaceText, regArr[2]); return str.replace(Reg, replaceCount1 + '$1' + replaceCount2) } //replaceStr('1asd88465asdwqe3',[5],0) //*****8465asdwqe3 else if (regArr.length === 1 && type == 0) { regtext = '(^\w{' + regArr[0] + '})' Reg = new RegExp(regtext); var replaceCount = repeatStr(replaceText, regArr[0]); return str.replace(Reg, replaceCount) } //replaceStr('1asd88465asdwqe3',[5],1,'+') //"1asd88465as+++++" else if (regArr.length === 1 && type == 1) { regtext = '(\w{' + regArr[0] + '}$)' Reg = new RegExp(regtext); var replaceCount = repeatStr(replaceText, regArr[0]); return str.replace(Reg, replaceCount) } }

       1.6 检测字符串

    //checkType('165226226326','phone')
    //false
    //大家可以根据需要扩展
    function checkType (str, type) {
        switch (type) {
            case 'email':
                return /^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$/.test(str);
            case 'phone':
                return /^1[3|4|5|7|8][0-9]{9}$/.test(str);
            case 'tel':
                return /^(0d{2,3}-d{7,8})(-d{1,4})?$/.test(str);
            case 'number':
                return /^[0-9]$/.test(str);
            case 'english':
                return /^[a-zA-Z]+$/.test(str);
            case 'chinese':
                return /^[u4E00-u9FA5]+$/.test(str);
            case 'lower':
                return /^[a-z]+$/.test(str);
            case 'upper':
                return /^[A-Z]+$/.test(str);
            default :
                return true;
        }
    }

       1.7 检测密码强度

    //checkPwd('12asdASAD')
    //3(强度等级为3)  长度<6则为0级。数字,小写字母,大写字母 .和-和_
    function checkPwd(str) {
        var nowLv = 0;
        if (str.length < 6) {
            return nowLv
        }
        ;
        if (/[0-9]/.test(str)) {
            nowLv++
        }
        ;
        if (/[a-z]/.test(str)) {
            nowLv++
        }
        ;
        if (/[A-Z]/.test(str)) {
            nowLv++
        }
        ;
        if (/[.|-|_]/.test(str)) {
            nowLv++
        }
        ;
        return nowLv;
    }

       1.8 随机码(toString详解)

    // Math.random() 生产随机数
    //toString(2)  转成2进制,toString(4) 转成4进制, 最大进制支持转为36进制
    //substring 方法用于提取字符串中介于两个指定下标之间的字符:substring(start,end[可选,省略会一直到字符串的结尾])
    //count取值范围0-36
    //randomNumber(10)
    //"2584316588472575"
    //randomNumber(14)
    //"9b405070dd00122640c192caab84537"
    //Math.random().toString(36).substring(2);
    //"83vhdx10rmjkyb9"
    function randomNumber(count) {
        return Math.random().toString(count).substring(2);
    }

       1.9 查找某一个子字符串在整个字符串中出现的次数

    function countStr(str, strSplit) {
        return str.split(strSplit).length - 1
    }
    var strTest = 'sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967'
    console.log(countStr(strTest, 'blog'));// 6
  • 相关阅读:
    <亲测>CentOS7yum安装PHP7.2
    linux开机出现一下错误Give root password for maintenance (or type Control-D to continue):
    解决js输出汉字乱码问题
    <亲测>.NET Core项目在Linux上使用QRCoder时出错"Unable to load DLL 'gdiplus'"
    <亲测>阿里云centos7 挂载数据盘配置
    centos 磁盘清理 /dev/vda1系统盘满了
    两种方式:mysql查看正在执行的sql语句
    adb调试android设备 说的比较清楚的一篇文章
    <亲测>window+iis+letsencrypt+ssl 手动续期(通配符域名)
    申请免费通配符证书(Let's Encrypt)并绑定IIS
  • 原文地址:https://www.cnblogs.com/ilimengyang/p/9417674.html
Copyright © 2011-2022 走看看