zoukankan      html  css  js  c++  java
  • 字符串的截取 随机验证码

      // JavaScript中字符串的截取
            // 所谓字符串的截取,就是从原始字符串中,获取一部分内容,为新的字符串

            // 方法1  字符串.substr(参数1,参数2)
            // 参数1:指定截取的起始位置
            // 参数2:指定截取的字符长度(如果是负数,截取结果是空字符串)

            var str1 = 'abcdefg';

            // 语法形式1,从索引下标是0的位置开始,截取3个字符
            var res1 = str1.substr(0,3);

            // 语法形式2,如果只定义一个参数
            // 从指定的位置开始,截取至字符串结束
            var res2 = str1.substr(0);

            // 语法形式3,如果第一个参数是负数
            // 是从倒数第几个字符开始截取
            // -5,就是从倒数第五个字符开始截取
            // 2 ,就是截取2个字符
            var res3 = str1.substr(-5,2);


            // 总结:
            // 参数1,指定截取的起始位置
            //       正数,0 : 索引下标
            //       负数   : 倒数第几个字符
            // 参数2,指定截取字符的个数
            //       不写,默认截取至字符串的结束
            //       正数,0 : 截取字符的个数
            //       负数   : 截取结果是空字符串



            // 方法2: 字符串.substring(参数1,参数2);
            // 参数1:截取起始字符的索引(包含的)
            // 参数2:截取结束字符的索引(不包含的)
            // 包前不包后 , 管杀不管埋


            var str2 = 'abcdefg';

            // 语法形式1
            // 起始是索引为2的第三个字符 c 包含的
            // 结束是索引为5的第六个字符 g 不包含的
            var res4 = str2.substring(2,5);

            // 语法形式2
            // 定义一个参数
            // 特别注意,如果定义一个参数,会从指定的索引位置截取至字符串的最后一个字符
            // 并且,特别注意,是包括最后一个字符的
            var res5 = str2.substring(2);

            // 语法形式3
            // 参数1,是负数,从起始位置开始截取字符
            var res6 = str2.substring(-2);

            // 语法形式4
            // 参数2,是负数,结果是空字符串
            var res7 = str2.substring(-2,-2);

            // 总结 : substring()
            // 参数1:截取起始的索引下标
            //       如果只定义一个参数,截取至字符串的结束,包括字符串的最后一个字符
            //       参数1是负数,效果是从起始字符开始截取
            // 参数2:截取结束的索引下标
            //       定义了第二个参数,是截取结束的字符索引下标,但是不包含这个字符
            //       参数2是负数,结果是空字符串
     
      // 我们实际项目中,验证码的验证,我们使用的是第三方平台来做验证
            // 我们现在只是初步理解生成验证码的方法

            // 思路:
            // 从 字符串 中 随机截取或者获取一个字符 , 拼接生成 新的字符串
            // 新的字符串,就是随机的验证码

            // 原始字符串,是我们生成随机验证码的对象
            var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

            // 如果要生成6位验证码,就是随机从这个字符串中,获取6个字符,拼接为一个新的字符串
            // 使用随机数配合循环来完成这个效果
            // 随机数的范围是 0 第一个索引 到 最后一个索引 str.length-1 
            // 如果允许出现重复的字符,那么只要限定循环的次数即可

            // 如果不允许出现重复的字符,可以使用indexOf()方法判断
            // 判断新字符串中,是否有,从原始字符串中获取的字符
            // 如果没有,可以拼接写入
            // 如果有,就不写入,并且执行i-- 在来循环一次

            // 允许出现重复的字符
            // var newStr = '';

            // for(var i = 1 ; i <= 6 ; i++){
            //     // 随机数的范围是 0 --- str.length-1
            //     var num = parseInt(Math.random()*(str.length-1+1-0) +0);
            //     // 通过随机数,作为索引下标,获取字符,拼接生成新的字符串
            //     newStr += str[num];
            // }

            // 不允许出现重复字符
            // var newStr = '';

            // var time = 0;

            // for(var i = 1 ; i <= 6 ; i++){
            //     time++;
            //     // 随机数的范围是 0 --- str.length-1
            //     var num = parseInt(Math.random()*(str.length-1+1-0) +0);
            //     // 新字符串中没有str[num]当前随机数获取的字符,执行写操作
            //     if(newStr.indexOf( str[num]) === -1){
            //         newStr += str[num];
            //     }else{
            //         // 生成重复字符,i--,再循环一次
            //         i--;
            //     }
            // }

            // console.log(newStr);
            // console.log(time);


            // 还可以使用while循环来实现
            // 实际不清楚循环次数
            // 当新字符串的长度不足6位,就需要继续循环,继续拼接新的字符
            // 当新字符串有6个字符,也就是长度是6,length属性是6时,终止循环
            
            // 存储新字符串
            var newStr = '';
            // 记录执行次数
            var time = 0;
            
            // 只要新字符串长度不是6 , 就循环
            while( newStr.length !== 6 ){
                // 随机数的范围是 0 --- str.length-1
                var num = parseInt(Math.random()*(str.length-1+1-0) +0);
                // 新字符串,没有当前获取的字符,就执行写入操作
                if(newStr.indexOf( str[num]) === -1){
                    newStr += str[num];
                }
                // 循环一次,循环次数自增1
                time++;
            }
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    多元隐函数组求导快速判断自变量和因变量
    jQuery通过ajax方法获取json数据不执行success的原因及解决方法
    JS对于字符串的切割截取
    PHPStorm 解决报错:com.mysql.cj.exceptions.InvalidConnectionAttributeException
    点击checkbox后,$(this).attr('checked')得到的值不会发生改变
    phpstudy等php本地环境运行缓慢的问题解决方法
    HTML5跳转页面并传值以及localStorage的用法
    Js与jQuery的相互转换
    PhpStorm代码编辑区竖线的用途以及如何去掉
    PhpStorm 运行出现502 Bad Gateway
  • 原文地址:https://www.cnblogs.com/ht955/p/14045229.html
Copyright © 2011-2022 走看看