C#最简单的随机字符串生成方法

简介

   随机字符串在生成验证码使用的比较多,通常需要通过单独写方法生成随机字符串,实现方法很多。本文将介绍C#比较简单的一种实现随机字符串的方法,这个方法支持英文大小写字母、中文字母和数字,主要通过Random下的next方法随机获取字符的编码,具体实现如下:

实现方法

    这里使用了一个类,主要方便实例化Random,并可以保持Random在同一个实例化下继续使用Next。类中的方法有2个参数,size参数是字符串的长度,lowerCase表示是否小写,默认是大写。方法里有具体的介绍实现过程。需要注意的是必须引用System.Text。代码在最后面列出了调用方法,全部代码如下。.

public class RandomGenerator{// 实例化一个Random//这种方式可以保持Random在同一实例上继续使用Nextprivate 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();
随机字符串汉字效果如下:

C#最简单的随机字符串生成方法

结语
   上面案例主要使用了Random生成随机数的原理,这里巧妙的利用字符编码来生成随机的字符数组等,主要用到了Random的Next()方法。这种方式的缺点是字母和字符串混合不好完成,但是也可以通过交替生成随机数和字符后合并;另外如果是中文指定字符也不能完成。希望本文能帮助到你,同时欢迎评论和吐槽。