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++;
            }
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    HTML5结构
    HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素
    CF GYM 100703G Game of numbers
    CF GYM 100703I Endeavor for perfection
    CF GYM 100703K Word order
    CF GYM 100703L Many questions
    CF GYM 100703M It's complicate
    HDU 5313 Bipartite Graph
    CF 560e Gerald and Giant Chess
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/ht955/p/14045229.html
Copyright © 2011-2022 走看看