[源码]RandomId 生成随机字符串

/* * 名称:RandomId * 功能:生成随机ID * 作者:冰麟轻武 * 日期:2012年1月31日 03:36:28 * 版本:1.0 * 最后更新:2012年1月31日 03:36:28 */ using System; using System.Text; namespace blqw { public sealed class RandomId : IFormattable { /// <summary> 1234567890qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM /// </summary> public const string ALLWORDS = "1234567890qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM"; /// <summary> 2345678wertyuiopasdfghjkzxcvbnm23456780QWERTYUPASDFGHJKLZXCVBNM /// </summary> public const string SIMPLEWORDS = "2345678wertyuipasdfghjkzxcvbnm2345678WERTYUPASDFGHJKLZXCVBNM"; #region 私有对象 const string ONE = "{0}"; static RandomId _Rid = new RandomId(0); readonly static Random _Rand = new Random(); static string ToFormat(int length) { StringBuilder sb = new StringBuilder(length * 3); for (int i = 0; i < length; i++) { sb.Append(ONE); } return sb.ToString(); } readonly string _Dict; readonly int _RMax; readonly string _Format; #endregion /// <summary> 构造函数 /// </summary> /// <param name="length">生成Id长度</param> /// <param name="dict">随机字符字典,默认字典为0-9a-zA-Z</param> public RandomId(int length, string dict = ALLWORDS) : this(RandomId.ToFormat(length), dict) { } /// <summary> 构造函数 /// </summary> /// <param name="format">生成Id格式</param> /// <param name="dict">随机字符字典,默认字典为0-9a-zA-Z</param> public RandomId(string format, string dict = ALLWORDS) { _Dict = dict; _Format = format; _RMax = dict.Length; } /// <summary> 生成Id /// </summary> public string Create() { return string.Format(_Format, this); } /// <summary> 生成Id /// </summary> /// <param name="length">生成Id长度</param> /// <param name="dict">随机字符字典,默认字典为0-9a-zA-Z</param> public static string Create(int length, string dict = ALLWORDS) { return new RandomId(length, dict).Create(); } /// <summary> 生成Id /// </summary> /// <param name="format">生成Id格式</param> /// <param name="dict">随机字符字典,默认字典为0-9a-zA-Z</param> public static string Create(string format, string dict = ALLWORDS) { return new RandomId(format, dict).Create(); } #region IFormattable 成员 string IFormattable.ToString(string format, IFormatProvider formatProvider) { return _Dict[_Rand.Next(0, _RMax)].ToString(); } #endregion } }
Console.WriteLine(RandomId.Create(4));//使用默认字典生成4位随机字符串,默认字典中不包含l,1,O,0,q,9等容易混淆字符 Console.WriteLine(RandomId.Create(4, RandomId.ALLWORDS));//使用完整字典(0-9a-zA-Z),生成4位随机字符 Console.WriteLine(RandomId.Create(10, "多少级开发和贷款撒了花费大量时间好快理发店撒娇哦就开放了的撒酒阿克里福德就是卡看了就分开的世界里分开家里的事"));//使用指定中文字典,生成4位随机字符 Console.WriteLine(RandomId.Create("SN:{0}{0}{0}{0}-{0}{0}{0}-{0}{0}{0}.{0}{0}", "123456abcdef"));//使用指定字典生成特定格式的随机字符
结果:
C9RX
6bd2
级分的卡就和多发世克
SN:6eb2-d2c-6af.d4
请按任意键继续. . .
没太多技术含量,就是封装了个类,方便调用
我写的文章,除了纯代码,其他的都是想表达一种思想,一种解决方案.希望各位看官不要局限于文章中的现成的代码,要多关注整个文章的主题思路,谢谢!
我发布的代码,没有任何版权,遵守WTFPL协议(如有引用,请遵守被引用代码的协议)
qq群:5946699 希望各位喜爱C#的朋友可以在这里交流学习,分享编程的心得和快乐
我发布的代码,没有任何版权,遵守WTFPL协议(如有引用,请遵守被引用代码的协议)
qq群:5946699 希望各位喜爱C#的朋友可以在这里交流学习,分享编程的心得和快乐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述