3种方法实现随机验证码

随机验证码案例

一、了解验证码的组成

1、由4个字符组成的字符串

2、4个字符是随机的数字、大小写字母

3、4个字符的字体是随机的,并且颜色,大小都是随机的

4、同时,字体也是倾斜的

二、如何用c#来是实现?

1、在这里,我们要用到 Random 这个随机函数对象

2、那么该如何来使用Random呢?

Rabdom 既然是个函数对象,那么,它肯定是先创建/实例化这个对象才能使用,必须要在全局变量中来创建。

 Random ra = new Random();//创建随机函数这个对象

3、有了随机对象以后,接下来考虑的问题就是,验证码是由4个字符串组成,那么肯定要先定义一个空的字符串来装这4个字符。

 string sum = "";//定义一个string类型的空字符串来装随机出来的四个字符

4、接下里,就要开始随机了。验证码是由4个字符组成的,并且字符的数字大小写都是随机。

那么,就要使用for循环来输出4个数,然后,for循环中的循环体我们应该怎么写?

因为是由数字,大小写字母组成,所以是三种情况,那么,就让他随机出三个数0,1,2,其中,0代表数字,随机数字0-9,1代表大写字母,随机24个大写字母,2代表小写字母,随机24个小写字母。

5、然后随机出来的这四个数我们都要装到空字符串中。

for (int i = 0; i < 4; i++)//使用for循环来随机出来四个数
            {
                int type = ra.Next(0, 3);//让它随机出来0-2的数
                if (type==0)//如果随机出0
                {
                    sum+=ra.Next(0, 10).ToString()+'-';//那么就随机数字
                }
                else if (type==1)//如果随机出1
                {
                    sum += ((char)ra.Next(65, 91)).ToString()+'-';//那么就让它随机大写字母
                }
                else//最后一种就是随机出2
                {
                    sum += ((char)ra.Next(97, 123)).ToString()+'-';//那么就让他随机小写字母
                }
            }

6、然后我们要将4个随机字符装到lablel中,那么该如何装呢?

三、三种方法实现将四个字符装入到lablel中

1、分割字符串为数组

(1)什么是数组?

所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。

数组是用于储存多个相同类型数据的集合。

(2)所以要先定义一个数组然后使用 Split() 这个方法,然后并赋值给这个字符

​ ① Split()表示基于数组中的字符,将字符串拆分为多个字符串 ,所以值必须要填分隔符,是字符

②既然是拆分字符串,那么就应该由分割符,拆分出来的字符串不包含分隔符

​ ③所以,接下来要做的事就是要在三个随机0、1和2后边加字符,可以是‘,’或者‘-’,然后将这个分隔符填入到方法中

string[] arg = sum.Split('-');//定义数组,将拆分的字符串放入到数组中

(3)将定义好的数组赋值给4个lablel

label1.Text = arg[0];
label2.Text = arg[1];
label3.Text = arg[2];
label4.Text = arg[3];

因为for循环的是4个数,初始值从0开始i<4所以方括号中就应该填写0,1,2,3

这样就实现了随机验证码

2、截取字符串

(1)那么该如何截取字符串呢?

①要先定义一个string类型的变量

②使用Substring();这个方法并赋值为定义的String类型的变量

Substring();表示 从此实例检索子字符串,子字符串从指定的字符位置开始具有指定的长度。

简单来说就是将将这4个字符分别截取出来,但是他们有指定的长度

它的值是(从字符串的其实位置0开始,子字符串的字符数)。

那么,括号中的第一个值就是你4个随机数的序号0,1,2,3,第二个值是1,因为你截取的是一个字符

string str1 = sum.Substring(0,1);
string str2 = sum.Substring(1, 1);
string str3 = sum.Substring(2, 1);
string str4 = sum.Substring(3, 1);

③将定义的string变量分别赋值为lable1-4

label1.Text = str1;
label2.Text = str2;
label3.Text = str3;
label4.Text = str4;

这样就实现了随机验证码

3、通过索引获取字符串数据

①直接sum[0]就可以取得字符串中第一个字符,第二个就是1

②然后将索引获取的字符串赋值给lablel1-4就可以了

label1.Text=sum[0].ToString();//将char类型转转换为字符串类型
label2.Text = sum[1].ToString();
label3.Text = sum[2].ToString();
label4.Text = sum[3].ToString();

这个就跟分割字符串为数组的方法有异曲同工之妙,但是它不用添加任何方法。同样for循环的4个字符串为别0,1,2,3,就直接赋值就可以了

四、随机lablel文本中的字体,大小,颜色

1、随机字体的话就要用到第一种方法的数组

​ 同样,也是先定义一个字体数组,实则就是string类型的变量,来装这些字体,但是不同的是它是由花括号括起来的,括号里边就直接写字体。因为是string类型所以必须加双引号。

string[] ziti = { "楷体", "宋体","Arial","Verdand","黑体","Impact","等线","微软雅黑","新宋体" };
label1.Font = new Font(ziti[ra.Next(9)],ra.Next(10, 25),FontStyle.Italic);//设置lablel1中的字体、大小随机,字体为倾斜
label2.Font = new Font(ziti[ra.Next(9)], ra.Next(10, 25), FontStyle.Italic);
label3.Font = new Font(ziti[ra.Next(9)], ra.Next(10, 25), FontStyle.Italic);
label4.Font = new Font(ziti[ra.Next(9)], ra.Next(10, 25), FontStyle.Italic);

同样,也是一样在数组名+[],括号里边就直接调用随机函数随机

Font 表示使用指定的大小和样式初始化文本

ra.Next(10, 25) 就表示随机字体大小10-24之间

FontStyle.Italic 就表示字体倾斜

你可能感兴趣的:(python,c#)