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

简介

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

随机字符串汉字效果如下:

6d5864dbc4e0894486e5b213c9bb29d4.png

结语

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

版权声明:本文来源于网友收集或网友供稿,仅供学习交流之用,如果有侵权,请转告小编或者留言,本公众号立即删除。

-

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# ASP.NET 中生成验证码,可以使用 System.Drawing 命名空间中的 Graphics 类来创建图片,并使用 Random 类来生成随机验证码字符串。以下是一个简单的示例代码: ```csharp using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Web; public partial class CaptchaImage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 设置验证码的长度 int length = 6; // 创建一个随机生成器,并生成随机字符串 Random random = new Random(); string captcha = ""; for (int i = 0; i < length; i++) { captcha += Convert.ToChar(random.Next(65, 90)); } // 将验证码字符串保存到 Session 中 Session["Captcha"] = captcha; // 创建一个图片对象,并设置宽度和高度 Bitmap bitmap = new Bitmap(length * 20, 50); // 创建一个 Graphics 对象,用于绘制图片 Graphics graphics = Graphics.FromImage(bitmap); // 设置绘制文本的字体和颜色 Font font = new Font("Arial", 24); Brush brush = new SolidBrush(Color.Black); // 绘制文本 graphics.DrawString(captcha, font, brush, 0, 0); // 添加噪点 for (int i = 0; i < 100; i++) { int x = random.Next(bitmap.Width); int y = random.Next(bitmap.Height); bitmap.SetPixel(x, y, Color.FromArgb(random.Next(256), random.Next(256), random.Next(256))); } // 添加干扰线 for (int i = 0; i < 10; i++) { int x1 = random.Next(bitmap.Width); int y1 = random.Next(bitmap.Height); int x2 = random.Next(bitmap.Width); int y2 = random.Next(bitmap.Height); graphics.DrawLine(new Pen(Color.FromArgb(random.Next(256), random.Next(256), random.Next(256))), x1, y1, x2, y2); } // 将图片保存到输出流中 MemoryStream stream = new MemoryStream(); bitmap.Save(stream, ImageFormat.Jpeg); Response.Clear(); Response.ContentType = "image/jpeg"; Response.BinaryWrite(stream.ToArray()); graphics.Dispose(); bitmap.Dispose(); } } ``` 在上面的代码中,我们首先生成了一个随机验证码字符串,并将其保存到 Session 中。然后创建一个 Bitmap 对象,设置宽度和高度,并创建一个 Graphics 对象,用于绘制图片。接着设置绘制文本的字体和颜色,并使用 DrawString 方法将验证码字符串绘制到图片上。最后添加噪点和干扰线,并将图片保存到输出流中,以供页面显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值