// 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++;
}