您的位置:首页 > 编程语言 > C#

(C#)生成指定长度的随机字符串的通用方法

2017-03-01 15:20 856 查看
.NET(C#)生成指定长度的随机字符串的通用方法,此方法可以指定字符串的长度,是否包含数字,是否包含符号,是否包含小写字母,是否包含大写字母等,

源码:

1  #region 生成指定长度的随机字符串
2         /// <summary>
3         /// 生成指定长度的随机字符串
4         /// </summary>
5         /// <param name="intLength">随机字符串长度</param>
6         /// <param name="booNumber">生成的字符串中是否包含数字</param>
7         /// <param name="booSign">生成的字符串中是否包含符号</param>
8         /// <param name="booSmallword">生成的字符串中是否包含小写字母</param>
9         /// <param name="booBigword">生成的字符串中是否包含大写字母</param>
10         /// <returns></returns>
11         public string GetRandomizer(int intLength, bool booNumber, bool booSign, bool booSmallword, bool booBigword)
12         {
13             //定义
14             Random ranA = new Random();
15             int intResultRound = 0;
16             int intA = 0;
17             string strB = "";
18
19             while (intResultRound < intLength)
20             {
21                 //生成随机数A,表示生成类型
22                 //1=数字,2=符号,3=小写字母,4=大写字母
23
24                 intA = ranA.Next(1, 5);
25
26                 //如果随机数A=1,则运行生成数字
27                 //生成随机数A,范围在0-10
28                 //把随机数A,转成字符
29                 //生成完,位数+1,字符串累加,结束本次循环
30
31                 if (intA == 1 && booNumber)
32                 {
33                     intA = ranA.Next(0, 10);
34                     strB = intA.ToString() + strB;
35                     intResultRound = intResultRound + 1;
36                     continue;
37                 }
38
39                 //如果随机数A=2,则运行生成符号
40                 //生成随机数A,表示生成值域
41                 //1:33-47值域,2:58-64值域,3:91-96值域,4:123-126值域
42
43                 if (intA == 2 && booSign == true)
44                 {
45                     intA = ranA.Next(1, 5);
46
47                     //如果A=1
48                     //生成随机数A,33-47的Ascii码
49                     //把随机数A,转成字符
50                     //生成完,位数+1,字符串累加,结束本次循环
51
52                     if (intA == 1)
53                     {
54                         intA = ranA.Next(33, 48);
55                         strB = ((char)intA).ToString() + strB;
56                         intResultRound = intResultRound + 1;
57                         continue;
58                     }
59
60                     //如果A=2
61                     //生成随机数A,58-64的Ascii码
62                     //把随机数A,转成字符
63                     //生成完,位数+1,字符串累加,结束本次循环
64
65                     if (intA == 2)
66                     {
67                         intA = ranA.Next(58, 65);
68                         strB = ((char)intA).ToString() + strB;
69                         intResultRound = intResultRound + 1;
70                         continue;
71                     }
72
73                     //如果A=3
74                     //生成随机数A,91-96的Ascii码
75                     //把随机数A,转成字符
76                     //生成完,位数+1,字符串累加,结束本次循环
77
78                     if (intA == 3)
79                     {
80                         intA = ranA.Next(91, 97);
81                         strB = ((char)intA).ToString() + strB;
82                         intResultRound = intResultRound + 1;
83                         continue;
84                     }
85
86                     //如果A=4
87                     //生成随机数A,123-126的Ascii码
88                     //把随机数A,转成字符
89                     //生成完,位数+1,字符串累加,结束本次循环
90
91                     if (intA == 4)
92                     {
93                         intA = ranA.Next(123, 127);
94                         strB = ((char)intA).ToString() + strB;
95                         intResultRound = intResultRound + 1;
96                         continue;
97                     }
98
99                 }
100
101                 //如果随机数A=3,则运行生成小写字母
102                 //生成随机数A,范围在97-122
103                 //把随机数A,转成字符
104                 //生成完,位数+1,字符串累加,结束本次循环
105
106                 if (intA == 3 && booSmallword == true)
107                 {
108                     intA = ranA.Next(97, 123);
109                     strB = ((char)intA).ToString() + strB;
110                     intResultRound = intResultRound + 1;
111                     continue;
112                 }
113
114                 //如果随机数A=4,则运行生成大写字母
115                 //生成随机数A,范围在65-90
116                 //把随机数A,转成字符
117                 //生成完,位数+1,字符串累加,结束本次循环
118
119                 if (intA == 4 && booBigword == true)
120                 {
121                     intA = ranA.Next(65, 89);
122                     strB = ((char)intA).ToString() + strB;
123                     intResultRound = intResultRound + 1;
124                     continue;
125                 }
126             }
127             return strB;
128
129         }
130         #endregion


读取数据:

1  private void button1_Click(object sender, EventArgs e)
2         {
3             foreach (var file in Directory.GetFiles("E:\\renew", "*.txt").Where(t => t.ToLower().EndsWith(".txt")).ToList())
4             {
5                 using (StreamReader reader = new StreamReader(file, Encoding.UTF8))
6                 {
7                     string strLine = string.Empty;
8                     while ((strLine = reader.ReadLine()) != null)
9                     {
10                         renewModel.Content = strLine;
11                         renewBLL.Add(renewModel);
12                     }
13                 }
14             }
15         }


写入数据:

1   private void button2_Click(object sender, EventArgs e)
2         {
3             StreamWriter sw = new StreamWriter(@"E:\test.txt", true, Encoding.UTF8);
4             List<string> list = new List<string>();
5             while (1 == 1)
6             {
7                 string str = "CCKD";
8                 str += GetRandomizer(5, true, false, false, true);
9                 if (!list.Contains(str))
10                 {
11                     list.Add(str);
12                     sw.WriteLine(str);
13                     sw.Flush();
14                 }
15                 if (list.Count== 100000)
16                     break;
17             }
18             sw.Close();
19         }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: