简介
随机字符串在生成验证码使用的比较多,通常需要通过单独写方法生成随机字符串,实现方法很多。本文将介绍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();