3種方法實現隨機驗證碼

2021-10-05 05:13:18 字數 3102 閱讀 9672

1、由4個字元組成的字串

2、4個字元是隨機的數字、大小寫字母

3、4個字元的字型是隨機的,並且顏色,大小都是隨機的

4、同時,字型也是傾斜的

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迴圈來隨機出來四個數

else if (type==1)//如果隨機出1

else//最後一種就是隨機出2

}

6、然後我們要將4個隨機字元裝到lablel中,那麼該如何裝呢?

(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

這樣就實現了隨機驗證碼

(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;

這樣就實現了隨機驗證碼

①直接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,就直接賦值就可以了

1、隨機字型的話就要用到第一種方法的陣列

​ 同樣,也是先定義乙個字型陣列,實則就是string型別的變數,來裝這些字型,但是不同的是它是由花括號括起來的,括號裡邊就直接寫字型。因為是string型別所以必須加雙引號。

string ziti = ;
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 就表示字型傾斜

隨機驗證碼的實現

隨機驗證 隨機生產6位數字 漢字 大小寫字母並且進行驗證 隨機生成數字 var s math.floor math.random 10 隨機生成漢字 var string 中國語言文本網將由教育部語言文字應用研究所主辦和執行管理,新 訪問入口更改 var s string.charat math.f...

隨機驗證碼

function window,document if object.prototype.tostring.call options object object else this options.numarr 0,1,2,3,4,5,6,7,8,9 split this options.lette...

生成隨機驗證碼的方法

1 借助列表 import random def random code random list for i in range 4 ra random.randrange 4 if ra i 97,122 else 0,9 code join random list return code resu...