简介
随机字符串在生成验证码使用的比较多,通常需要通过单独写方法生成随机字符串,实现方法很多。本文将介绍C#比较简单的一种实现随机字符串的方法,这个方法支持英文大小写字母、中文字母和数字,主要通过Random下的next方法随机获取字符的编码,具体实现如下:
实现方法
这里使用了一个类,主要方便实例化Random,并可以保持Random在同一个实例化下继续使用Next。类中的方法有2个参数,size参数是字符串的长度,lowerCase表示是否小写,默认是大写。方法里有具体的介绍实现过程。需要注意的是必须引用System.Text。代码在最后面列出了调用方法,全部代码如下。
public class RandomGenerator
{
// 实例化一个Random
//这种方式可以保持Random在同一实例上继续使用Next
private readonly Random _random = new Random();
// 生成随机字符串的方法,可以传入长度,也可以设置大小写
public string RandomString(int size, bool lowerCase = false)
{
var builder = new StringBuilder(size);
// 先列出一个单独的char字符
//1、大小写字母随机字符串配置
//char offset = lowerCase ? 'a' : 'A';
//字母的大小写都是26个
//const int lettersOffset = 26; // A...Z or a..z: length = 26
//2、生成中文随机字符串配置
//char offset = '啊';//汉字编码的第一个字“啊”,汉字有7000多个
//const int lettersOffset = 1000;
//3、生成数字随机字符串配置
char offset = '0';//第一个数字是0
const int lettersOffset = 9;//共10个数
for (var i = 0; i < size; i++)
{
//随机找出Unicode/ASCII后的随机字符
var @char = (char)_random.Next(offset, offset + lettersOffset);
builder.Append(@char);
}
return lowerCase ? builder.ToString().ToLower() : builder.ToString();
}
}
//调用方法
var generator = new RandomGenerator();
var randomString = generator.RandomString(6);
Console.WriteLine($"随机6个字符串是:{randomString}");
Console.ReadKey();
随机字符串汉字效果如下:
结语
上面案例主要使用了Random生成随机数的原理,这里巧妙的利用字符编码来生成随机的字符数组等,主要用到了Random的Next()方法。这种方式的缺点是字母和字符串混合不好完成,但是也可以通过交替生成随机数和字符后合并;另外如果是中文指定字符也不能完成。希望本文能帮助到你,同时欢迎评论和吐槽。
版权声明:本文来源于网友收集或网友供稿,仅供学习交流之用,如果有侵权,请转告小编或者留言,本公众号立即删除。
-
技术群:添加小编微信并备注进群
小编微信:mm1552923
公众号:dotNet编程大全